<div id="readability-page-1" class="page">
 <feed xmlns="http://www.w3.org/2005/Atom" xmlns:opensearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
  <id>
   tag:blogger.com,1999:blog-6755709643044947179
  </id>
  <updated>
   2021-03-23T12:34:43.814-07:00
  </updated>
  <category term="Featured" />
  <category term="Android" />
  <category term="Google Play" />
  <category term="Develop" />
  <category term="Android Developer" />
  <category term="Games" />
  <category term="android developers" />
  <category term="latest" />
  <category term="Android Studio" />
  <category term="Security" />
  <category term="Apps" />
  <category term="archive" />
  <category term="Announcements" />
  <category term="Google Play services" />
  <category term="Android Wear" />
  <category term="Distribute" />
  <category term="Developer Preview" />
  <category term="#11WeeksOfAndroid" />
  <category term="NDK" />
  <category term="Google Services" />
  <category term="android security" />
  <category term="GooglePlay" />
  <category term="User Interface" />
  <category term="Play Console" />
  <category term="Android N" />
  <category term="Design" />
  <category term="Developer Console" />
  <category term="SDK updates" />
  <category term="Android Developer Challenge" />
  <category term="Google Play game services" />
  <category term="Kotlin" />
  <category term="Google Play Console" />
  <category term="How-to" />
  <category term="Android TV" />
  <category term="App" />
  <category term="Privacy" />
  <category term="Google Play Games" />
  <category term="Android Market" />
  <category term="Material Design" />
  <category term="Android Auto" />
  <category term="AndroidDevStory" />
  <category term="Game" />
  <category term="Jetpack" />
  <category term="Story" />
  <category term="Tools" />
  <category term="android11" />
  <category term="Android Things" />
  <category term="developers" />
  <category term="Android 1.5" />
  <category term="Google I/O" />
  <category term="Location" />
  <category term="developer" />
  <category term="Best Practices" />
  <category term="UI" />
  <category term="compatibility" />
  <category term="android p" />
  <category term="Android Design" />
  <category term="Android Dev Summit" />
  <category term="Android O" />
  <category term="Performance" />
  <category term="Udacity" />
  <category term="wear" />
  <category term="Android 11" />
  <category term="Android app development" />
  <category term="Marshmallow" />
  <category term="Optimization" />
  <category term="Support Library" />
  <category term="androidq" />
  <category term="machine learning" />
  <category term="permissions" />
  <category term="Android 1.6" />
  <category term="Google Analytics" />
  <category term="notifications" />
  <category term="Google" />
  <category term="Google Play Store" />
  <category term="Localization" />
  <category term="London" />
  <category term="#Android" />
  <category term="API" />
  <category term="Android 5.0" />
  <category term="Android Development" />
  <category term="Android Jetpack" />
  <category term="AndroidO" />
  <category term="Audio" />
  <category term="C++" />
  <category term="Europe" />
  <category term="Google Cloud Platform" />
  <category term="IoT" />
  <category term="Project Treble" />
  <category term="Tablets" />
  <category term="Wear OS" />
  <category term="appstory" />
  <category term="business" />
  <category term="competition" />
  <category term="engagement" />
  <category term="grow" />
  <category term="monetization" />
  <category term="prizes" />
  <category term="subscriptions" />
  <category term="win" />
  <category term="Android Instant Apps" />
  <category term="Android Pie" />
  <category term="App quality" />
  <category term="GDC" />
  <category term="Game Development" />
  <category term="Google Cloud Messaging" />
  <category term="Graphics" />
  <category term="Layout" />
  <category term="News" />
  <category term="Play Store" />
  <category term="Testing" />
  <category term="UI toolkit" />
  <category term="admob" />
  <category term="analytics" />
  <category term="androidstudio" />
  <category term="developerstory" />
  <category term="indie" />
  <category term="indies" />
  <category term="showcase" />
  <category term="‘Google Play" />
  <category term="Android M" />
  <category term="Android Q" />
  <category term="Android Vitals" />
  <category term="AndroidX" />
  <category term="Google Cast" />
  <category term="IO2013" />
  <category term="Navigation" />
  <category term="Open source" />
  <category term="Pixel" />
  <category term="Policy" />
  <category term="Renderscript" />
  <category term="Saatchi" />
  <category term="aosp" />
  <category term="battery" />
  <category term="google play protect" />
  <category term="users" />
  <category term="#androiddevsummit" />
  <category term="#io19" />
  <category term="Android 2.0" />
  <category term="Android 9" />
  <category term="Android Emulator" />
  <category term="Android Open Source Project" />
  <category term="App Resources" />
  <category term="Bluetooth" />
  <category term="Education" />
  <category term="Firebase" />
  <category term="Game Developers Conference" />
  <category term="Google Assistant" />
  <category term="Google Fit" />
  <category term="Google Play Devs" />
  <category term="Google Play games services" />
  <category term="HTTPS" />
  <category term="In-app Billing" />
  <category term="Indie Games" />
  <category term="Media and Camera" />
  <category term="OpenGL ES" />
  <category term="Power series" />
  <category term="Quality" />
  <category term="Requirements" />
  <category term="TensorFlow" />
  <category term="Treble" />
  <category term="WebView" />
  <category term="androidn" />
  <category term="contest" />
  <category term="gamestory" />
  <category term="io15" />
  <category term="nearby" />
  <category term="#Android11" />
  <category term="#AndroidDevChallenge" />
  <category term="#JetpackCompose" />
  <category term="#MADSkills" />
  <category term="APIs" />
  <category term="Actions on Google" />
  <category term="Android 10" />
  <category term="Android 4.2" />
  <category term="Android 6.0" />
  <category term="Android SDK" />
  <category term="Android for Work" />
  <category term="Android for cars" />
  <category term="AndroidWear" />
  <category term="Animation" />
  <category term="App Components" />
  <category term="Authentication" />
  <category term="Code Day" />
  <category term="Courses" />
  <category term="Developer profiles" />
  <category term="GCM" />
  <category term="Google Drive" />
  <category term="Google Mobile Ads" />
  <category term="IO2014" />
  <category term="Indie Games Accelerator" />
  <category term="Intents" />
  <category term="Jetpack Compose" />
  <category term="Launch" />
  <category term="Launchpad Accelerator" />
  <category term="Licensing" />
  <category term="ML" />
  <category term="ML Kit" />
  <category term="Media" />
  <category term="Sample code" />
  <category term="Samples" />
  <category term="androidp" />
  <category term="growth" />
  <category term="iOS" />
  <category term="signing" />
  <category term="update" />
  <category term="wifi" />
  <category term="#io17" />
  <category term="#io18" />
  <category term="AI" />
  <category term="Activity Recognition" />
  <category term="Ads" />
  <category term="Android 3.0" />
  <category term="Android 3.2" />
  <category term="Android 4.4" />
  <category term="Android Automotive OS" />
  <category term="Android Dev" />
  <category term="AndroidDev" />
  <category term="AndroidGameDev" />
  <category term="App Bundle" />
  <category term="App Indexing" />
  <category term="Architecture Components" />
  <category term="Beta" />
  <category term="Biometrics" />
  <category term="Chromebooks" />
  <category term="Commerce" />
  <category term="Compose" />
  <category term="Custom Model" />
  <category term="Developer Labs" />
  <category term="Developing Media Apps" />
  <category term="Development Tools" />
  <category term="Early Access" />
  <category term="Firebase Cloud Messaging" />
  <category term="Fragments" />
  <category term="GameDev" />
  <category term="Google For Games" />
  <category term="Google Maps" />
  <category term="Google Play Indie Games Festival" />
  <category term="Google Play for Work" />
  <category term="Google client API" />
  <category term="Google+" />
  <category term="Indie Contest" />
  <category term="Indie Games Festival" />
  <category term="Indie games contest" />
  <category term="Indie games showcase" />
  <category term="Indie showcase" />
  <category term="Input methods" />
  <category term="Instant Apps" />
  <category term="LiquidFun" />
  <category term="Maps" />
  <category term="Maps API" />
  <category term="MaterialDesign" />
  <category term="Mobile Games" />
  <category term="Notification" />
  <category term="Preview" />
  <category term="SDK Tools" />
  <category term="Screens" />
  <category term="Subscription" />
  <category term="TLS" />
  <category term="TensorFlow Lite" />
  <category term="Text and Input" />
  <category term="UX" />
  <category term="VR" />
  <category term="Virtual Reality" />
  <category term="android oreo" />
  <category term="apk" />
  <category term="chrome" />
  <category term="connection encryption" />
  <category term="developer stories" />
  <category term="developer story" />
  <category term="developergamestory" />
  <category term="dynamic delivery" />
  <category term="event" />
  <category term="events" />
  <category term="fcm" />
  <category term="google play for families" />
  <category term="indie developers" />
  <category term="kernel" />
  <category term="mobile vision APIs" />
  <category term="network security" />
  <category term="oreo" />
  <category term="people" />
  <category term="release" />
  <category term="safety" />
  <category term="stable release" />
  <category term="store listing experiments" />
  <category term="ubicomp" />
  <category term="updates" />
  <category term="workmanager" />
  <category term="#AndroidDev" />
  <category term="#AndroidDevJourney" />
  <category term="#Androiddevelopment" />
  <category term="#GDC20" />
  <category term="#TheAndroidShow" />
  <category term="5G" />
  <category term="64bit" />
  <category term="Action Bar" />
  <category term="Actions" />
  <category term="Android 2.1" />
  <category term="Android 2.2" />
  <category term="Android 2.3" />
  <category term="Android 7.0" />
  <category term="Android 71" />
  <category term="Android App" />
  <category term="Android App Bundles" />
  <category term="Android Architecture" />
  <category term="Android Architecture Components" />
  <category term="Android Developer Phone" />
  <category term="Android Developer Story" />
  <category term="Android Devs" />
  <category term="Android Game SDK" />
  <category term="Android Go" />
  <category term="Android Pay API" />
  <category term="Android Studio 3.0" />
  <category term="Android Study Jams" />
  <category term="Android Wear 2.0" />
  <category term="Android codelabs" />
  <category term="Android courses" />
  <category term="Android training" />
  <category term="Android12" />
  <category term="Animation and Graphics" />
  <category term="App Bundles" />
  <category term="AppCompat" />
  <category term="BLE" />
  <category term="Boston" />
  <category term="C" />
  <category term="Canary" />
  <category term="Connectivity" />
  <category term="Conversation API" />
  <category term="Coroutines" />
  <category term="Dashboard" />
  <category term="Daydream" />
  <category term="Debugging" />
  <category term="Dev Story" />
  <category term="Dev Tools" />
  <category term="Developer Console Store Listing Experiments" />
  <category term="Developer Inspiration" />
  <category term="Efficient Apps" />
  <category term="Fundamentals" />
  <category term="GDC 2020" />
  <category term="GLSL" />
  <category term="GPS" />
  <category term="Global" />
  <category term="Google Developer" />
  <category term="Google Developers" />
  <category term="Google Play Billing" />
  <category term="Google Play Instant" />
  <category term="Google Wallet" />
  <category term="Google codelabs" />
  <category term="GoogleAPIClient" />
  <category term="Gradle" />
  <category term="Guidelines" />
  <category term="I/O2014" />
  <category term="IME" />
  <category term="Identity" />
  <category term="Internet of Things" />
  <category term="JNI" />
  <category term="Java" />
  <category term="Java 8" />
  <category term="Kotlin Everywhere" />
  <category term="LVL" />
  <category term="LaunchShow" />
  <category term="Linux" />
  <category term="LondonEng" />
  <category term="Memory Management" />
  <category term="Model Maker" />
  <category term="MotionLayout" />
  <category term="Nougat" />
  <category term="OpenGL" />
  <category term="Places" />
  <category term="Play Academy" />
  <category term="PlayStore" />
  <category term="Profiling" />
  <category term="Pure" />
  <category term="SEA" />
  <category term="Safe Browsing" />
  <category term="SafetyNet" />
  <category term="Scoped Storage" />
  <category term="Southeast Asia" />
  <category term="Storage" />
  <category term="TLS by default" />
  <category term="TV" />
  <category term="Text-to-Speech" />
  <category term="Translation" />
  <category term="Unity" />
  <category term="User Support" />
  <category term="Web" />
  <category term="Widgets" />
  <category term="androidjetpack" />
  <category term="app signing" />
  <category term="apps games insights" />
  <category term="beacons" />
  <category term="beta testing" />
  <category term="billing" />
  <category term="build Android apps" />
  <category term="buildingforbillions" />
  <category term="career inspiration" />
  <category term="careers in tech" />
  <category term="chrome os" />
  <category term="constraintlayout" />
  <category term="conversations" />
  <category term="conversions" />
  <category term="d8" />
  <category term="dexer" />
  <category term="documentation" />
  <category term="dx" />
  <category term="encryption" />
  <category term="foldable" />
  <category term="foldables" />
  <category term="game design" />
  <category term="google computer science" />
  <category term="hackster" />
  <category term="in-app purchase" />
  <category term="infinite deviation: games" />
  <category term="insights" />
  <category term="io2010" />
  <category term="laptops" />
  <category term="library" />
  <category term="malware" />
  <category term="mobile" />
  <category term="play" />
  <category term="podcast" />
  <category term="ratings" />
  <category term="reviews" />
  <category term="social impact" />
  <category term="target API" />
  <category term="text" />
  <category term="things" />
  <category term="user data" />
  <category term="vulkan" />
  <category term="watch face API" />
  <category term="wearos" />
  <category term="#11WeeksOfAndroid Android TV" />
  <category term="#ADS19" />
  <category term="#Android #Android development # advanced Android #learn Android #build Android apps #Udacity" />
  <category term="#Android12" />
  <category term="#AndroidJetpack" />
  <category term="#AndroidTV #Google Cast #Udacity" />
  <category term="#EdTech" />
  <category term="#GDC17 #GoogleDeveloperDay #GooglePlay #Games #VR #Daydream #Developers #Android #Google Play" />
  <category term="#GPA2017 #GooglePlayAwards #GooglePlay #Games #VR #AR #AndroidWear #Indies #Startup #Apps #Developers #Android #Google Play" />
  <category term="#GPA2018 #GooglePlayAwards #GooglePlay #Games #VR #AR #AndroidWear #Indies #Startup #Apps #Developers #Android #Google Play" />
  <category term="#Game" />
  <category term="#MADscore" />
  <category term="#Media" />
  <category term="#STEM" />
  <category term="#TechEd" />
  <category term="#TechEdu" />
  <category term="#advancedAndroid #Udacity" />
  <category term="#codelabcourses" />
  <category term="#codelabs" />
  <category term="#io16" />
  <category term="'Google Play" />
  <category term=".app" />
  <category term="11 Weeks of Android" />
  <category term="11weeksofandroid" />
  <category term="3d" />
  <category term="505 Games" />
  <category term="8.1" />
  <category term="A/B testing" />
  <category term="AAudio for Android" />
  <category term="ADT-3" />
  <category term="AIY" />
  <category term="AIY Projects" />
  <category term="AMD" />
  <category term="AMP" />
  <category term="APK Expansion Files" />
  <category term="ARM" />
  <category term="ARPU" />
  <category term="ART" />
  <category term="ART profiles" />
  <category term="ASO" />
  <category term="ATSL" />
  <category term="About Fun" />
  <category term="Acquisition" />
  <category term="ActivityResult" />
  <category term="Administration" />
  <category term="Advanced Android course" />
  <category term="Advanced Android training" />
  <category term="Agus Gomez" />
  <category term="Android 11 Compatibility" />
  <category term="Android 11 final release" />
  <category term="Android 2.3.3" />
  <category term="Android 4.0" />
  <category term="Android 4.3" />
  <category term="Android 5.1" />
  <category term="Android 7.1" />
  <category term="Android 8.1" />
  <category term="Android C++" />
  <category term="Android Dev Journey" />
  <category term="Android Developer Journey" />
  <category term="Android Developers  #GooglePlayAwards #GooglePlay #Games #Indies #Startup #Apps #Developers #Android" />
  <category term="Android Developers Best Practices" />
  <category term="Android Excellence" />
  <category term="Android Gradle Plugin" />
  <category term="Android IDE" />
  <category term="Android IO" />
  <category term="Android Keystore" />
  <category term="Android Neural Networks" />
  <category term="Android Neural Networks API" />
  <category term="Android O Developer Preview" />
  <category term="Android One" />
  <category term="Android Paging" />
  <category term="Android Pay" />
  <category term="Android Performance Tuner" />
  <category term="Android Q Beta" />
  <category term="Android Q Beta 6" />
  <category term="Android Scudo" />
  <category term="Android Security Rewards" />
  <category term="Android Security Rewards Program" />
  <category term="Android Studio 3.6" />
  <category term="Android Studio 4.0" />
  <category term="Android Studio 4.1" />
  <category term="Android Testing Support Library" />
  <category term="Android Tools" />
  <category term="Android VRP" />
  <category term="Android audio latency" />
  <category term="Android graphics" />
  <category term="Androidtv" />
  <category term="AnswerLab" />
  <category term="AoG" />
  <category term="App Startup" />
  <category term="App experience" />
  <category term="App icons" />
  <category term="Application Security Improvement Program" />
  <category term="Architecture" />
  <category term="Assistant" />
  <category term="Assistant SDK" />
  <category term="Auto" />
  <category term="Auto Backup" />
  <category term="Autofill Framework" />
  <category term="BABBQ" />
  <category term="Benchmarking" />
  <category term="Betatesting" />
  <category term="Billions" />
  <category term="Biometric authentication" />
  <category term="BiometricPrompt" />
  <category term="BiometricPrompt API" />
  <category term="Budge Studios" />
  <category term="Bugs" />
  <category term="C++ audio library for Android" />
  <category term="CFI" />
  <category term="Call Log" />
  <category term="CameraX" />
  <category term="Certificates" />
  <category term="Certification" />
  <category term="Channels" />
  <category term="Cloud Speech API" />
  <category term="Compiler Mitigations" />
  <category term="Compiler-based security" />
  <category term="Complications" />
  <category term="Consistency" />
  <category term="Console" />
  <category term="Contacts" />
  <category term="Content Provider" />
  <category term="Control Flow Integrity" />
  <category term="Cool Stuff" />
  <category term="Crostini" />
  <category term="CultureAlley" />
  <category term="DAC/Design" />
  <category term="DAC/Develop" />
  <category term="DNS over TLS" />
  <category term="DP3" />
  <category term="DataStore" />
  <category term="Deep Links" />
  <category term="Demographics" />
  <category term="Deprecation" />
  <category term="DevTools" />
  <category term="Developer Accounts" />
  <category term="Developer Days" />
  <category term="Developer Journey" />
  <category term="Developer Student Clubs" />
  <category term="DialogFragment" />
  <category term="Disruptor Beam" />
  <category term="DonutTracker" />
  <category term="Doze" />
  <category term="Driving Do Not Disturb" />
  <category term="EA" />
  <category term="Editors’ Choice" />
  <category term="Electronic Arts" />
  <category term="Engage" />
  <category term="Enterprise" />
  <category term="ExoPlayer" />
  <category term="Facebook" />
  <category term="Fast Pair" />
  <category term="Feedback" />
  <category term="Finance" />
  <category term="Find My Device" />
  <category term="Fit" />
  <category term="Fortify" />
  <category term="Fragment" />
  <category term="GDC17" />
  <category term="GDC19" />
  <category term="GDC20" />
  <category term="GNSS" />
  <category term="GPGS" />
  <category term="GSI" />
  <category term="Games and Media" />
  <category term="Gareth Jones" />
  <category term="Gesture Navigation" />
  <category term="Gestures" />
  <category term="Global events" />
  <category term="Gmail" />
  <category term="Golf Clash" />
  <category term="Google APIs" />
  <category term="Google Apps" />
  <category term="Google Awareness API" />
  <category term="Google Home app" />
  <category term="Google Mobile Developer Day" />
  <category term="Google Now" />
  <category term="Google Play App Safety" />
  <category term="Google Play Asset Delivery" />
  <category term="Google Play Developer API" />
  <category term="Google Play Developer API V3" />
  <category term="Google Play Developer API Version 3" />
  <category term="Google Play Developer Policies" />
  <category term="Google Play Points" />
  <category term="Google Play Protect Rewards Program" />
  <category term="Google Play developer distribution agreement" />
  <category term="Google Sign-In" />
  <category term="Google registry" />
  <category term="GoogleDeveloperDay" />
  <category term="GooglePlay AndroidDev" />
  <category term="Gpfe" />
  <category term="GridLayout" />
  <category term="HAL" />
  <category term="HWASan" />
  <category term="HelloEnglish" />
  <category term="Holo" />
  <category term="HttpsURLConnection" />
  <category term="Hutch" />
  <category term="Hutch Games" />
  <category term="HyperV" />
  <category term="I/O 2018" />
  <category term="ICS" />
  <category term="IO" />
  <category term="IO 2019" />
  <category term="Image Processing" />
  <category term="Indie games developers" />
  <category term="Indonesia" />
  <category term="Indonesia Games Contest" />
  <category term="Intent" />
  <category term="Inzen studio" />
  <category term="Issue Tracker" />
  <category term="Japan" />
  <category term="JetBrains" />
  <category term="Job Scheduler" />
  <category term="Job Service" />
  <category term="KNOX" />
  <category term="Key Attestation" />
  <category term="Keystone" />
  <category term="Klei Entertainment" />
  <category term="Kotlin Event" />
  <category term="Kotlin codelabs" />
  <category term="KotlinConf" />
  <category term="LTV" />
  <category term="LaMatinale" />
  <category term="Large Screens" />
  <category term="LeMonde" />
  <category term="Life of a Bug" />
  <category term="Lifecycle" />
  <category term="Linux on Chrome OS" />
  <category term="Linux on Chromebooks" />
  <category term="LiveData" />
  <category term="Lollipop" />
  <category term="MAD Skills" />
  <category term="MENA" />
  <category term="Marta Gui" />
  <category term="MediaSession" />
  <category term="Memory Safety" />
  <category term="Messenger" />
  <category term="Mountain View" />
  <category term="Multiwindow" />
  <category term="Munich" />
  <category term="Music" />
  <category term="NBU" />
  <category term="NFC" />
  <category term="NLP" />
  <category term="Nav Editor" />
  <category term="Navigation Q&amp;A" />
  <category term="Navigation Sample" />
  <category term="Navigation component" />
  <category term="Niji Games" />
  <category term="Nix Hydra" />
  <category term="Non-SDK" />
  <category term="Notification bubbles" />
  <category term="Now in Arabic" />
  <category term="O-MG" />
  <category term="OAuth" />
  <category term="OS Updates" />
  <category term="Oboe audio library" />
  <category term="Omnidrone" />
  <category term="On-Device Machine Learning" />
  <category term="Onboarding" />
  <category term="OpenSL ES for Android" />
  <category term="Operating System" />
  <category term="P2P" />
  <category term="PWA" />
  <category term="Paging" />
  <category term="Paul Gouge" />
  <category term="Photo Sphere" />
  <category term="Physics" />
  <category term="Pico" />
  <category term="Pixel 2" />
  <category term="Platform" />
  <category term="Platform Stability" />
  <category term="Play IO19" />
  <category term="Playdemic" />
  <category term="Playtime 2016" />
  <category term="Plugin" />
  <category term="Pocket Gems" />
  <category term="Policies" />
  <category term="Potentially Harmful Applications" />
  <category term="Pre-Launch Report" />
  <category term="Project Mainline" />
  <category term="Promo Graphics" />
  <category term="Promotions" />
  <category term="Public Tracker" />
  <category term="PyTorch mobile support" />
  <category term="PyTorck" />
  <category term="Q Beta 6" />
  <category term="Quick Search Box" />
  <category term="R8" />
  <category term="RTL" />
  <category term="Ratings and Reviews" />
  <category term="Releases" />
  <category term="Resources" />
  <category term="Robinhood" />
  <category term="SMS" />
  <category term="SafeArgs" />
  <category term="Sample app" />
  <category term="Sanitizers" />
  <category term="Santa Tracker" />
  <category term="Schell Games" />
  <category term="ScreenCapture" />
  <category term="Sensors" />
  <category term="Seriously" />
  <category term="ShareActionProvider" />
  <category term="Shared Elements" />
  <category term="SharedPreferences" />
  <category term="Sharing" />
  <category term="Shortcuts" />
  <category term="Skyscanner" />
  <category term="Smartlock" />
  <category term="Social Point" />
  <category term="South Korea" />
  <category term="Space" />
  <category term="Space Ape Games" />
  <category term="Speech Input" />
  <category term="Stencils" />
  <category term="Storytoys" />
  <category term="Studio" />
  <category term="Super Evil MegaCorp" />
  <category term="Survey" />
  <category term="System hardening" />
  <category term="TAGS: Google Play" />
  <category term="TEE" />
  <category term="Target API level" />
  <category term="Tel Aviv" />
  <category term="Telephony" />
  <category term="Tips" />
  <category term="Titan Brawl" />
  <category term="Touch" />
  <category term="Trusted User Interface" />
  <category term="Twitter" />
  <category term="UAMP" />
  <category term="Updatability" />
  <category term="User Feedback" />
  <category term="VGames" />
  <category term="Viber" />
  <category term="Video" />
  <category term="Visibility" />
  <category term="Vitals" />
  <category term="Voice" />
  <category term="Voice Kit" />
  <category term="Wear UI Library" />
  <category term="Wearables" />
  <category term="Webdriver" />
  <category term="Wide Color" />
  <category term="Work Manager" />
  <category term="World Food Day" />
  <category term="XmlPullParser" />
  <category term="YouTube" />
  <category term="accessibility" />
  <category term="activity-recognition" />
  <category term="advanced Android" />
  <category term="android 8.0" />
  <category term="android audio apps" />
  <category term="android c++ games linux open source release osx serialization windows" />
  <category term="android extension pack" />
  <category term="android kotlin" />
  <category term="android o apis" />
  <category term="android privacy" />
  <category term="android sanitizer" />
  <category term="android things 1.0" />
  <category term="android wear 1.0" />
  <category term="android10" />
  <category term="android71" />
  <category term="android81" />
  <category term="android9" />
  <category term="androidoreo" />
  <category term="announcement" />
  <category term="app attribution" />
  <category term="app id" />
  <category term="app install" />
  <category term="app standby buckets" />
  <category term="app updates" />
  <category term="appbundle" />
  <category term="application security" />
  <category term="applications" />
  <category term="ar" />
  <category term="arch" />
  <category term="arcore" />
  <category term="attestation" />
  <category term="audio playback capture" />
  <category term="audio recording" />
  <category term="augmented reality" />
  <category term="autofill" />
  <category term="award" />
  <category term="awareness" />
  <category term="background" />
  <category term="background access" />
  <category term="background location" />
  <category term="badge" />
  <category term="bar code" />
  <category term="beacon" />
  <category term="beginner" />
  <category term="best apps 2020" />
  <category term="best games 2020" />
  <category term="betatesting GooglePlayforFamilies" />
  <category term="big data" />
  <category term="blackhat" />
  <category term="bootcamp" />
  <category term="bubbles" />
  <category term="bug swatting" />
  <category term="bulletins" />
  <category term="business development" />
  <category term="case study" />
  <category term="clang" />
  <category term="class loading" />
  <category term="codelabs" />
  <category term="codesearch" />
  <category term="coding" />
  <category term="color" />
  <category term="companion Action" />
  <category term="context" />
  <category term="controls" />
  <category term="course" />
  <category term="cross-platform" />
  <category term="curriculum" />
  <category term="cutout" />
  <category term="dalvik" />
  <category term="data storage" />
  <category term="ddms" />
  <category term="deeplocal" />
  <category term="desktop" />
  <category term="desktop apps" />
  <category term="developer profile" />
  <category term="developer success" />
  <category term="developerappstory" />
  <category term="developerstory developerconsole" />
  <category term="device id" />
  <category term="dynamicdelivery" />
  <category term="eBook" />
  <category term="educator" />
  <category term="emojis" />
  <category term="emulator" />
  <category term="face detection" />
  <category term="faculty" />
  <category term="families" />
  <category term="final release" />
  <category term="first app" />
  <category term="fitness" />
  <category term="font updates" />
  <category term="form factors" />
  <category term="free trial" />
  <category term="game-as-a-service" />
  <category term="games business" />
  <category term="gaming industry" />
  <category term="gapid" />
  <category term="gdc18" />
  <category term="getting started" />
  <category term="go edition" />
  <category term="gold" />
  <category term="golf games" />
  <category term="google pay" />
  <category term="google play developers" />
  <category term="google security" />
  <category term="googleservices" />
  <category term="guide" />
  <category term="health" />
  <category term="how to develop audio apps for android" />
  <category term="http" />
  <category term="i18n" />
  <category term="imakeapps" />
  <category term="insider attack resistance" />
  <category term="install referrer" />
  <category term="install track" />
  <category term="installs" />
  <category term="instant" />
  <category term="instant experience" />
  <category term="instant games" />
  <category term="instructor" />
  <category term="internationalization" />
  <category term="internet" />
  <category term="intuit" />
  <category term="io16" />
  <category term="io18" />
  <category term="keys" />
  <category term="kids app developers" />
  <category term="kids apps" />
  <category term="ktx" />
  <category term="l10n" />
  <category term="language" />
  <category term="language id" />
  <category term="language identification" />
  <category term="laptop apps" />
  <category term="large screen devices" />
  <category term="latency" />
  <category term="leanback" />
  <category term="learn Android" />
  <category term="learning" />
  <category term="listing" />
  <category term="liveops" />
  <category term="location access" />
  <category term="location data" />
  <category term="long aspect ratio" />
  <category term="machine" />
  <category term="marble" />
  <category term="media controls" />
  <category term="memory" />
  <category term="messaging api" />
  <category term="mobile ads" />
  <category term="mobile encryption" />
  <category term="mobile search" />
  <category term="motion." />
  <category term="multi-display support" />
  <category term="multiplayer" />
  <category term="musician apps" />
  <category term="network" />
  <category term="oboe" />
  <category term="of" />
  <category term="official launch" />
  <category term="offline" />
  <category term="ordered broadcast" />
  <category term="oscon" />
  <category term="outreach" />
  <category term="packaging" />
  <category term="patch level" />
  <category term="patching" />
  <category term="pathway" />
  <category term="peer group" />
  <category term="phone" />
  <category term="play billing" />
  <category term="play billing library" />
  <category term="play core" />
  <category term="playback resumption" />
  <category term="playbook app" />
  <category term="playconsole" />
  <category term="player engagement" />
  <category term="policy compliance" />
  <category term="policy violations" />
  <category term="pre rotation" />
  <category term="pre-leaunch" />
  <category term="preinstalled apps" />
  <category term="preloaded apps" />
  <category term="pro audio" />
  <category term="programming" />
  <category term="project marble" />
  <category term="protection" />
  <category term="publishing" />
  <category term="purchase flows" />
  <category term="push messaging" />
  <category term="pwn" />
  <category term="real-time audio" />
  <category term="recaptcha" />
  <category term="registration" />
  <category term="regulations" />
  <category term="revenue" />
  <category term="robotics" />
  <category term="runtime permissions" />
  <category term="sandbox" />
  <category term="sanitizer" />
  <category term="schools" />
  <category term="sdk" />
  <category term="seamless transfer" />
  <category term="secure hardware" />
  <category term="security infrastructure" />
  <category term="selinux" />
  <category term="service fees" />
  <category term="smart reply" />
  <category term="smr" />
  <category term="source code" />
  <category term="spam" />
  <category term="spyware" />
  <category term="stability" />
  <category term="storelistingexperime" />
  <category term="strictmode" />
  <category term="study group" />
  <category term="success stories" />
  <category term="system UI" />
  <category term="system fonts" />
  <category term="tamper-resistant hardware security" />
  <category term="targeted spyware" />
  <category term="taxation" />
  <category term="teach" />
  <category term="text styling API" />
  <category term="textclassifier" />
  <category term="texture compression" />
  <category term="textview" />
  <category term="threading" />
  <category term="titan" />
  <category term="traceview" />
  <category term="training" />
  <category term="transition api" />
  <category term="transitions" />
  <category term="transparency" />
  <category term="trial period" />
  <category term="university" />
  <category term="user control" />
  <category term="user experience" />
  <category term="user location" />
  <category term="viewpager" />
  <category term="virtual instruments" />
  <category term="vulnerabilities" />
  <category term="watch faces" />
  <category term="web registry" />
  <category term="wellness" />
  <title type="text">Android Developers Blog</title>
  <subtitle type="html">
   An Open Handset Alliance Project.
  </subtitle>
  <author>
   <name>
    Jacob Lehrbaum
   </name>
   <uri>
    http://www.blogger.com/profile/13732208892143144743
   </uri>
   <email>
    noreply@blogger.com
   </email>
   <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
  </author>
  <generator version="7.00" uri="http://www.blogger.com">
   Blogger
  </generator>
  <opensearch:totalresults>
   1208
  </opensearch:totalresults>
  <opensearch:startindex>
   1
  </opensearch:startindex>
  <opensearch:itemsperpage>
   25
  </opensearch:itemsperpage>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/hsDu" />
  <feedburner:info uri="blogspot/hsdu" />
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" />
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-756006723307025763
   </id>
   <published>
    2021-03-23T08:58:00.001-07:00
   </published>
   <updated>
    2021-03-23T08:58:12.489-07:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="Android" />
   <category scheme="http://www.blogger.com/atom/ns#" term="APIs" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <title type="text">High Performance Game Audio with Oboe</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-X2RRLRFr0ZA/YFjP1ccU1wI/AAAAAAAAQRs/YyLABCxLVp0BUUHKg_onEYEDEcyXtHawQCLcBGAsYHQ/s0/Android-high-performance-game-audio-with-oboe-header.png"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-X2RRLRFr0ZA/YFjP1ccU1wI/AAAAAAAAQRs/YyLABCxLVp0BUUHKg_onEYEDEcyXtHawQCLcBGAsYHQ/s0/Android-high-performance-game-audio-with-oboe-header.png"&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/dagalpin?lang=en"&gt;Dan Galpin&lt;/a&gt; &lt;/em&gt;&lt;p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-X2RRLRFr0ZA/YFjP1ccU1wI/AAAAAAAAQRs/YyLABCxLVp0BUUHKg_onEYEDEcyXtHawQCLcBGAsYHQ/s0/Android-high-performance-game-audio-with-oboe-header.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="High Performance Game Audio with Oboe graphic" border="0" data-original-height="968" data-original-width="3250" src="https://1.bp.blogspot.com/-X2RRLRFr0ZA/YFjP1ccU1wI/AAAAAAAAQRs/YyLABCxLVp0BUUHKg_onEYEDEcyXtHawQCLcBGAsYHQ/s0/Android-high-performance-game-audio-with-oboe-header.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p&gt; &lt;em&gt; We've added the Oboe C++ audio library to the Android Game SDK. Oboe's support of high-performance, low-latency audio across the widest range of Android devices is the right choice for most game developers.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;&lt;em&gt;Single API&lt;/em&gt;&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;On Android devices running Android 8.1 (API level 27) and higher, Oboe takes advantage of the improved performance and features of AAudio while maintaining backward compatibility (using OpenSL ES) with Android 4.1 (API level 16) and higher. Oboe also adds key features on top of the platform APIs to improve the audio developer experience, such as resampling, format conversion, and dynamic latency tuning. It performs audio data transformations, such as channel count conversion, when necessary to improve performance on selected devices, and has workarounds for other device-specific behaviors that improve the robustness of your audio code. In short, Oboe is now the recommended way to write audio code in C/C++ on Android.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;&lt;em&gt;Integrating Oboe&lt;/em&gt;&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; There are two primary ways to incorporate Oboe library prebuilts into your project. If you're using the Android Gradle plugin version 4.1.0 or higher along with CMake, and are using or can enable shared STL, enabling Oboe is as easy as adding Oboe to your Gradle dependencies, enabling prefabs, and adding a few lines to your CMakeLists file. &lt;/p&gt; &lt;p&gt; You can also integrate Oboe by statically linking using the Android Game SDK. Begin by &lt;a href="https://developer.android.com/games/sdk#download"&gt;downloading the library&lt;/a&gt; and checking it into your source control system. You need to be using minSdkVersion of 16 or higher with NDK release 18 or higher. Then, to specify the version of the game SDK to link in that's been compiled for the given ABI, API level, NDK, and STL combination, add a compiler include path in this form: &lt;/p&gt; &lt;pre class="prettyprint"&gt;gamesdk/libs/[architecture]_API[apiLevel]_NDK[ndkVersion]_[stlVersion]_Release Example: gamesdk/libs/arm64-v8a_API24_NDK18_cpp_static_Release&lt;/pre&gt; &lt;p&gt; Then add &lt;code&gt;-loboe_static&lt;/code&gt; to your linker command. Since you don't need to bundle the liboboe.so shared library, static linking gives you a smaller code footprint. If the ABI, API level, NDK, and STL combination doesn't have a precompiled version available for your settings, you can alternately link against the shared library. We have more guidance, including how to configure CMake for static libraries, in our &lt;a href="https://developer.android.com/games/sdk/oboe/update-build-settings"&gt;developer documentation&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Oboe Basics&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; To output audio, you begin by creating a stream with the required properties, including a callback that is used when the stream requires new data. &lt;/p&gt; &lt;pre class="prettyprint"&gt;oboe::AudioStreamBuilder builder; builder.setPerformanceMode(oboe::PerformanceMode::LowLatency) -&gt;setSharingMode(oboe::SharingMode::Exclusive) -&gt;setDataCallback(myCallback) -&gt;setFormat(oboe::AudioFormat::Float);&lt;/pre&gt; &lt;p&gt; You'll then populate the audio data inside of the callback. If the stream creates successfully, that means you got the requested stream type. If you didn't specify these types, you'll have to query to see what format was returned. &lt;/p&gt; &lt;pre class="prettyprint"&gt;class MyCallback : public oboe::AudioStreamDataCallback { public: oboe::DataCallbackResult onAudioReady(oboe::AudioStream *audioStream, void *audioData, int32_t numFrames) { // We requested AudioFormat::Float auto *outputData = static_cast&amp;lt;float *&gt;(audioData); // TODO: populate audioData here return oboe::DataCallbackResult::Continue; } };&lt;/pre&gt; &lt;p&gt; For full details on using Oboe, &lt;em&gt;check out the &lt;a href="https://github.com/google/oboe/blob/master/docs/GettingStarted.md"&gt;documentation&lt;/a&gt;, &lt;a href="https://github.com/google/oboe/tree/master/samples"&gt;code samples&lt;/a&gt; and &lt;a href="https://google.github.io/oboe/reference/namespaceoboe.html"&gt;API reference&lt;/a&gt;. There's even &lt;a href="https://developer.android.com/codelabs/musicalgame-using-oboe?hl=en#0"&gt;a codelab&lt;/a&gt; which shows you how to build a simple rhythm-based game.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;If you have any issues, please file them &lt;a href="https://github.com/google/oboe/issues"&gt;here&lt;/a&gt;. We'd love to hear from you.&lt;/em&gt; &lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=F6CPWiWIrHs:30ACUc6jYMg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=F6CPWiWIrHs:30ACUc6jYMg:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=F6CPWiWIrHs:30ACUc6jYMg:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/F6CPWiWIrHs" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-X2RRLRFr0ZA/YFjP1ccU1wI/AAAAAAAAQRs/YyLABCxLVp0BUUHKg_onEYEDEcyXtHawQCLcBGAsYHQ/s72-c/Android-high-performance-game-audio-with-oboe-header.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/03/high-performance-game-audio-with-oboe.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-3760397849552431554
   </id>
   <published>
    2021-03-17T10:11:00.002-07:00
   </published>
   <updated>
    2021-03-17T17:10:58.492-07:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="Android" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android12" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Developer Preview" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Media" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Privacy" />
   <title type="text">Android 12 Developer Preview 2</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/--LuXJTDz_vI/YFIgU1spOkI/AAAAAAAAQRI/Cku9StJJwVoDiWXZkfg0i2H-aSYaogeDgCLcBGAsYHQ/s0/Android%2B12_logo.png"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/--LuXJTDz_vI/YFIgU1spOkI/AAAAAAAAQRI/Cku9StJJwVoDiWXZkfg0i2H-aSYaogeDgCLcBGAsYHQ/s0/Android%2B12_logo.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Dave Burke, VP of Engineering &lt;/em&gt;&lt;p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-2WiKDQwO6nI/YC2vlLLtUyI/AAAAAAAAQFM/lje72qqUt74m22FTZZx_0VmfFnfjODSiACLcBGAsYHQ/s0/image6.png" style="display: block; padding: -10em; text-align: center; "&gt;&lt;img id="floatRight" alt="Android 12 logo" border="0" data-original-height="784" data-original-width="784" src="https://1.bp.blogspot.com/-2WiKDQwO6nI/YC2vlLLtUyI/AAAAAAAAQFM/lje72qqUt74m22FTZZx_0VmfFnfjODSiACLcBGAsYHQ/s0/image6.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt; Last month we shared the &lt;a href="https://android-developers.googleblog.com/2021/02/android-12-dp1.html"&gt;first preview of Android 12&lt;/a&gt;, an early look at the next version of Android. Today we’re bringing you the next milestone build in this year’s release, with more new features and changes for you to try with your apps. Our program of early previews is driven by our core philosophy of openness and collaboration with you, our community. Your input helps us make Android a better platform for developers and users, so keep the feedback coming! &lt;/p&gt; &lt;p&gt; In Android 12 we’re making the OS smarter, easier to use, and better performing, with privacy and security at the core. We’re also working to give you new tools for building great experiences for users, whether they’re using phones, laptops, tablets, TVs, or cars. Some things to look for in today’s release include new rounded corners APIs, improved picture-in-picture APIs, better companion device management, easier effects like blur and color filter, app overlay controls, and more. &lt;/p&gt; &lt;p&gt; There’s a lot to check out in Developer Preview 2 - read on for a few highlights and &lt;a href="https://developer.android.com/about/versions/12"&gt;visit the Android 12 developer site&lt;/a&gt; for details and downloads for Pixel. For those already running Developer Preview 1 or 1.1, we’re also offering an over-the-air (OTA) update to today’s release. &lt;/p&gt; &lt;p&gt; &lt;a href="https://developer.android.com/about/versions/12/feedback"&gt;Let us know what you think&lt;/a&gt;, and thank you to everyone who has shared such great feedback so far. &lt;/p&gt; &lt;section&gt; &lt;h2&gt;&lt;strong&gt;Trust and safety&lt;/strong&gt;&lt;/h2&gt; &lt;p&gt; We’re continuing to focus on giving users more transparency and control while keeping their devices and data secure. In today’s release, we’ve added some new features to check out and test with your apps. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;App overlay controls&lt;/strong&gt; - Android’s system alert window gives apps a way to get users’ attention for important actions by showing an overlay on top of the active app. These windows can interrupt the user, though, so we already require apps to &lt;a href="https://developer.android.com/reference/android/Manifest.permission#SYSTEM_ALERT_WINDOW"&gt;request permission&lt;/a&gt; before displaying them. Now in Android 12 we’re giving you control over whether these overlays can be shown over your content. After you’ve declared &lt;a href="https://developer.android.com/reference/android/Manifest.permission#HIDE_OVERLAY_WINDOWS"&gt;a new permission&lt;/a&gt;, your app can call &lt;a href="https://developer.android.com/reference/android/view/Window#setHideOverlayWindows(boolean)"&gt;Window#setHideOverlayWindows()&lt;/a&gt; to indicate that all &lt;a href="https://developer.android.com/reference/android/view/WindowManager.LayoutParams#TYPE_APPLICATION_OVERLAY"&gt;TYPE_APPLICATION_OVERLAY&lt;/a&gt; windows should be hidden when your app’s window is visible. You might choose to do this when displaying sensitive screens, such as transaction confirmation flows. More &lt;a href="https://developer.android.com/about/versions/12/features#hide-application-overlay-windows"&gt;here&lt;/a&gt;. &lt;/p&gt; &lt;/section&gt; &lt;section&gt; &lt;p&gt; &lt;strong&gt;Extended security for lockscreen notification actions&lt;/strong&gt; - Android 12 adds finer-grained privacy and security controls for notifications displayed on the device lockscreen. You can now &lt;a href="https://developer.android.com/reference/android/app/Notification.Action.Builder#setAuthenticationRequired(boolean)"&gt;configure notification actions&lt;/a&gt; so that when triggered from the lockscreen, they will always generate an authentication challenge. This extends the &lt;a href="https://developer.android.com/reference/android/app/Notification#visibility"&gt;notification visibility&lt;/a&gt; controls already available through the notification APIs. For example, this enables a messaging app to require authentication before deleting a message or marking it as read. More &lt;a href="https://developer.android.com/about/versions/12/features#notification-secure"&gt;here&lt;/a&gt;. &lt;/p&gt; &lt;/section&gt; &lt;section&gt; &lt;p&gt; &lt;div class="container" id="app-digest"&gt;&lt;/div&gt; &lt;strong&gt;Access to app digests &lt;/strong&gt; - For apps that need to validate the integrity of app packages installed on Android devices, we’re introducing a new API that lets you query the platform directly for the checksum of an installed app. You can choose from several digest algorithms such as SHA256, SHA512, Merkle Root, and others. To request a checksum, call &lt;a href="https://developer.android.com/reference/android/content/pm/PackageManager#requestChecksums(java.lang.String,%20boolean,%20int,%20java.util.List%3Cjava.security.cert.Certificate%3E,%20android.content.pm.PackageManager.OnChecksumsReadyListener)"&gt;PackageManager.requestChecksums()&lt;/a&gt; with an app’s package name, the &lt;a href="https://developer.android.com/reference/android/content/pm/Checksum"&gt;checksum types&lt;/a&gt; you need, the installer certs you trust, and a listener to receive the checksums. The platform returns the matching checksums, either precomputed and provided by the installer app (such as Google Play) or computed by the platform. Results are filtered based on &lt;a href="https://developer.android.com/training/basics/intents/package-visibility"&gt;package visibility&lt;/a&gt; guidelines, so you’ll need to declare the packages of interest in your manifest. This new API provides a simpler, more efficient way to obtain checksums and gives you the stability of a standard, public API that’s optimized for speed and security. For backward compatibility, we’re working on a Jetpack library that provides the same functionality back to API 15 - watch for more details coming soon. &lt;/p&gt; &lt;/section&gt; &lt;p&gt; You can read more about these and other privacy and security changes &lt;a href="https://developer.android.com/about/versions/12/behavior-changes-12"&gt;here&lt;/a&gt;. &lt;/p&gt; &lt;section&gt; &lt;h2&gt;&lt;strong&gt;Better user experience tools&lt;/strong&gt;&lt;/h2&gt; &lt;p&gt; We’re working to give you more tools to help you deliver a polished experience and better performance for users. Here are some of the updates in today’s release. &lt;/p&gt; &lt;/section&gt; &lt;section&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-lQIPkRs7ZgI/YFIYdcMx59I/AAAAAAAAQQw/iSqQbAyUByQDFHXpJH22H5oDs0TZXLAeACLcBGAsYHQ/s0/rounded_abs.png" style="display: block; padding: -10em; text-align: center; "&gt;&lt;img style="width:180px" id="floatRight" alt="rounded corners" border="0" data-original-height="784" data-original-width="784" src="https://1.bp.blogspot.com/-lQIPkRs7ZgI/YFIYdcMx59I/AAAAAAAAQQw/iSqQbAyUByQDFHXpJH22H5oDs0TZXLAeACLcBGAsYHQ/s0/rounded_abs.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt; &lt;strong&gt;Support for Rounded corners&lt;/strong&gt; - Many modern devices use screens with rounded corners, giving them a clean modern look, but also introducing some extra considerations for app developers. To deliver a great UX on these devices, developers need to account for the rounded corners and adjust any nearby UI elements to prevent them from being truncated. &lt;/p&gt; &lt;p&gt; To help with this, we’re introducing new APIs to let you query for rounded corners and get their details. A &lt;a href="https://developer.android.com/reference/android/view/RoundedCorner?hl=en"&gt;RoundedCorner&lt;/a&gt; holds the details for a corner, including its radius, centerpoint, and other data. You can call &lt;a href="https://developer.android.com/reference/android/view/Display#getRoundedCorner(int)"&gt;Display.getRoundedCorner()&lt;/a&gt; to get the absolute details for each rounded corner. You can also call &lt;a href="https://developer.android.com/reference/android/view/WindowInsets#getRoundedCorner(int)"&gt;WindowInsets.getRoundedCorner(&lt;/a&gt;) to get the corner details relative to your app’s bounds. With these, you can manage the position of UI elements and content as needed. More &lt;a href="https://developer.android.com/about/versions/12/features#rounded_corner_apis"&gt;here&lt;/a&gt;. &lt;/p&gt; &lt;/section&gt; &lt;section&gt; &lt;p&gt; &lt;strong&gt;Picture in Picture (PIP) improvements&lt;/strong&gt; - for people using gesture nav, we’ve improved how apps transition to picture-in-picture (PIP) mode on swipe up-to-home. If an app enables &lt;a href="https://developer.android.com/reference/android/app/PictureInPictureParams.Builder#setAutoEnterEnabled(boolean)"&gt;auto-PIP&lt;/a&gt;, the system now directly transitions the app to PIP mode on up-to-home, instead of waiting for the up-to-home animation to complete. This makes the transition smoother and improves perceived performance. We’ve also improved PIP window resizing for non-video content. Apps can now &lt;a href="https://developer.android.com/reference/android/app/PictureInPictureParams.Builder#setSeamlessResizeEnabled(boolean)"&gt;enable seamless resize&lt;/a&gt; to let the system resize the PIP Activity when needed. Android 12 also supports stashing the PiP window by dragging it to the left or right edge of the screen. Also, to make PIP windows easier to manipulate, we’ve updated the tap behaviors. Single-tapping now displays controls, and double-tapping toggles the PIP window size. More &lt;a href="https://developer.android.com/about/versions/12/features/pip-improvements"&gt;here&lt;/a&gt;. &lt;/p&gt; &lt;/section&gt; &lt;section&gt; &lt;p&gt; &lt;strong&gt;Keeping companion device apps awake &lt;/strong&gt;- For apps that manage companion devices like smartwatches and fitness trackers, it can be a challenge to make sure the app is running and connected whenever an associated companion device is nearby. To make this easier, we’re extending the &lt;a href="https://developer.android.com/reference/android/companion/CompanionDeviceManager"&gt;Companion Device Manager&lt;/a&gt; with a new &lt;a href="https://developer.android.com/reference/android/companion/CompanionDeviceService"&gt;CompanionDeviceService API&lt;/a&gt;. Apps that manage companion devices can implement this service to let the system wake the app whenever the associated companion device is nearby. The system keeps the service bound whenever the device is nearby, and notifies the service when the device goes in and out of range or is turned off, to let the app clean up state as needed. Apps can also use a new &lt;a href="https://developer.android.com/reference/android/companion/AssociationRequest.Builder#setDeviceProfile(java.lang.String)"&gt;companion device profile&lt;/a&gt; when connecting to a watch, which simplifies enrollment by bundling related permissions into a single grant. More &lt;a href="https://developer.android.com/about/versions/12/features#keep-awake"&gt;here&lt;/a&gt;. &lt;/p&gt; &lt;/section&gt; &lt;section&gt; &lt;p&gt; &lt;strong&gt;Bandwidth estimation improvements&lt;/strong&gt; - for developers who need to know the typical bandwidth available to each user so you can tailor their experience, we now provide improved bandwidth estimation. We’ve enhanced the existing &lt;a href="https://developer.android.com/about/versions/11/features/5g#estimator"&gt;bandwidth estimation APIs&lt;/a&gt; to let you retrieve an estimate of aggregate throughput per carrier or Wi-Fi SSID, network type, and signal level, for all users on the device. The new estimation is likely to be easier and more accurate than most other estimation methods, give it a try and let us know how it works for you. &lt;/p&gt; &lt;section&gt; &lt;p&gt; &lt;strong&gt;Easier blurs, color filters and other effects &lt;/strong&gt;- In Android 12, we’re making it easier to apply common graphics effects to your Views and rendering hierarchies. You can use &lt;a href="https://developer.android.com/reference/android/graphics/RenderEffect"&gt;RenderEffect&lt;/a&gt; to apply blurs, color filters, and more to any &lt;a href="https://developer.android.com/reference/android/graphics/RenderNode"&gt;RenderNode&lt;/a&gt;. You can combine these effects as chain effects (which compose an inner and outer effect in order) or blend them. You can also apply effects directly to Views (leveraging the underlying RenderNode) by calling &lt;a href="https://developer.android.com/reference/android/view/View#setRenderEffect(android.graphics.RenderEffect)"&gt;View.setRenderEffect(RenderEffect)&lt;/a&gt;. &lt;/p&gt; &lt;pre class="prettyprint"&gt; view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE)) &lt;/pre&gt; &lt;center&gt; &lt;p id="imgCaption"&gt; Blurring a View with RenderEffect &lt;/p&gt;&lt;/center&gt; &lt;p&gt; This allows you to blur the contents of an &lt;a href="https://developer.android.com/reference/android/widget/ImageView"&gt;ImageView&lt;/a&gt; without having to get the bitmap data, process the image, create a new &lt;a href="https://developer.android.com/reference/android/graphics/Bitmap"&gt;Bitmap&lt;/a&gt;, and set it back into the ImageView. RenderEffect leverages the existing rendering pipeline to minimize excess calculation. &lt;/p&gt; &lt;p&gt; Give these a try and let use know what you think! More &lt;a href="https://developer.android.com/about/versions/12/features#rendereffect"&gt;here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; You can also create a frosted glass effect for your window background using a new &lt;a href="https://developer.android.com/reference/android/view/Window#setBackgroundBlurRadius(int)"&gt;Window.setBackgroundBlurRadius()&lt;/a&gt; API. With this you can set a radius to control the density and scope and the platform applies the blur to the background content within the bounds of your app’s window only. You can also use &lt;a href="https://developer.android.com/reference/android/view/WindowManager.LayoutParams#blurBehindRadius"&gt;blurBehindRadius&lt;/a&gt; to blur all of the content behind the window to create a depth effect for a floating window. &lt;/p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-H8KalWgHCGE/YFIbLJYlxpI/AAAAAAAAQQ4/IfPpjm68v3sxN56M9KMZZfgZxRfEMNJmgCLcBGAsYHQ/s0/demo-dialog-dp2-blogpost-3.png" imageanchor="1" &gt;&lt;img style="width:300px" id=imgFull border="0" src="https://1.bp.blogspot.com/-H8KalWgHCGE/YFIbLJYlxpI/AAAAAAAAQQ4/IfPpjm68v3sxN56M9KMZZfgZxRfEMNJmgCLcBGAsYHQ/s0/demo-dialog-dp2-blogpost-3.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt;A dialog window with background blur and blur behind... &lt;/p&gt;&lt;/center&gt; &lt;/section&gt; &lt;section&gt; &lt;h2&gt;&lt;strong&gt;App compatibility&lt;/strong&gt;&lt;/h2&gt; &lt;p&gt; We’re working to make updates faster and smoother by prioritizing app compatibility as we roll out new platform versions. In Android 12, we’ve made most app-facing changes opt-in to give you more time, and we’ve updated our tools and processes to help you get ready sooner. &lt;/p&gt; &lt;p&gt; With Developer Preview 2, we’re well into the release and continuing to improve overall stability, so now is the time to try the new features and changes and give us your feedback. We’re especially looking for input on our APIs, as well as details on how the &lt;a href="https://developer.android.com/about/versions/12/behavior-changes-all"&gt;platform changes&lt;/a&gt; affect your apps. Please visit the &lt;a href="https://developer.android.com/about/versions/12/feedback"&gt;feedback page&lt;/a&gt; to share your thoughts with us or report issues. &lt;/p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-U4hDHhnmehE/YFI1uP1kv0I/AAAAAAAAQRQ/hHjFVBxNDh8OOkOfq34AN-a_hZPxAmHLwCLcBGAsYHQ/s0/android-12-desktop-timeline-en-overpg%2B%25281%2529.png" imageanchor="1" &gt;&lt;img style= "width:100%" id=imgFull border="0" src="https://1.bp.blogspot.com/-U4hDHhnmehE/YFI1uP1kv0I/AAAAAAAAQRQ/hHjFVBxNDh8OOkOfq34AN-a_hZPxAmHLwCLcBGAsYHQ/s0/android-12-desktop-timeline-en-overpg%2B%25281%2529.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;/center&gt; &lt;p&gt; It’s also a good time to start your &lt;a href="https://developer.android.com/about/versions/12/migration"&gt;compatibility testing&lt;/a&gt; and identify any work you’ll need to do. We recommend doing the work early, so you can release a compatible update by Android 12 Beta 1. There’s no need to change your app’s targetSdkVersion at this time, but we do recommend using the &lt;a href="https://developer.android.com/about/versions/12/reference/compat-framework-changes"&gt;behavior change toggles&lt;/a&gt; to get a preliminary idea of how your app might be affected by opt-in changes in Android 12. &lt;/p&gt; &lt;p&gt; As we reach &lt;a href="https://developer.android.com/about/versions/12/overview#platform_stability"&gt;Platform Stability&lt;/a&gt; in August 2021, all of the app-facing system behaviors, SDK/NDK APIs, and non-SDK lists will be finalized. At that point, you can wind up your final compatibility testing and release a fully compatible version of your app, SDK, or library. More on the timeline for developers is &lt;a href="https://developer.android.com/preview/overview"&gt;here&lt;/a&gt;. &lt;/p&gt; &lt;a href="https://1.bp.blogspot.com/-Q18mvR8f2DY/YFIe-fl83EI/AAAAAAAAQRE/ssOMv8fyR6oU3sD5MchxNrZxOfq1XSxRwCLcBGAsYHQ/s0/compat_toggles_crop.png" imageanchor="1" &gt;&lt;img style="width:300px" id=imgFull border="0" src="https://1.bp.blogspot.com/-Q18mvR8f2DY/YFIe-fl83EI/AAAAAAAAQRE/ssOMv8fyR6oU3sD5MchxNrZxOfq1XSxRwCLcBGAsYHQ/s0/compat_toggles_crop.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; App compatibility toggles in Developer Options. &lt;/p&gt; &lt;/section&gt; &lt;section&gt; &lt;h1&gt;Get started with Android 12&lt;/h1&gt; &lt;p&gt; The Developer Preview has everything you need to try the Android 12 features, test your apps, and give us &lt;a href="https://developer.android.com/about/versions/12/feedback"&gt;feedback&lt;/a&gt;. You can get started today by &lt;a href="https://developer.android.com/about/versions/12/download"&gt;flashing a device system image&lt;/a&gt; to a &lt;strong&gt;Pixel 3 / 3 XL&lt;/strong&gt;, &lt;strong&gt;Pixel 3a / 3a XL&lt;/strong&gt;, &lt;strong&gt;Pixel 4 / 4 XL&lt;/strong&gt;, &lt;strong&gt;Pixel 4a / 4a 5G&lt;/strong&gt;, or &lt;strong&gt;Pixel 5&lt;/strong&gt; device or using the Android Emulator. If you’ve already installed a preview build to your Pixel device, you’ll automatically get future updates over-the-air for all later previews and Betas. More details on how to get Android 12 are &lt;a href="https://developer.android.com/about/versions/12/get"&gt;here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; You can also test your apps on Android TV using today’s release and try the all-new Google TV experience. Learn more &lt;a href="https://developer.android.com/tv"&gt;here&lt;/a&gt; and get started with your &lt;a href="https://store.askey.com/adt-3.html"&gt;ADT-3 developer kit&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; For complete information, &lt;a href="https://developer.android.com/about/versions/12"&gt;visit the Android 12 developer site&lt;/a&gt;. &lt;/p&gt; &lt;/section&gt; &lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=ODwhBM8xdhM:UUAks7wIBMI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=ODwhBM8xdhM:UUAks7wIBMI:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=ODwhBM8xdhM:UUAks7wIBMI:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/ODwhBM8xdhM" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/--LuXJTDz_vI/YFIgU1spOkI/AAAAAAAAQRI/Cku9StJJwVoDiWXZkfg0i2H-aSYaogeDgCLcBGAsYHQ/s72-c/Android%2B12_logo.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/03/android-12-developer-preview-2.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-4089266272047154913
   </id>
   <published>
    2021-03-17T06:02:00.001-07:00
   </published>
   <updated>
    2021-03-17T06:02:48.600-07:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="#AndroidDevChallenge" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Dev" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Developer Challenge" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <title type="text">Android Dev Challenge Finale: Weather app</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-S_1wUTw7pNA/YFECtBI7KJI/AAAAAAAAQQo/Y8QSKwU7jIMSZ6290wQfxkDaBhwMHMgzgCLcBGAsYHQ/s0/final_6051019297e1390076a5e6ab_222819.png"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-S_1wUTw7pNA/YFECtBI7KJI/AAAAAAAAQQo/Y8QSKwU7jIMSZ6290wQfxkDaBhwMHMgzgCLcBGAsYHQ/s0/final_6051019297e1390076a5e6ab_222819.png"&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/Lojanda"&gt;Jolanda Verhoef&lt;/a&gt;, Developer Relations Engineer &lt;/em&gt;&lt;p&gt; &lt;p&gt; Let your creativity shine in the final week of the #AndroidDevChallenge! Last week we asked you to be fast, but for this final week we ask you to bring your 'A' game. Here’s the challenge: &lt;/p&gt; &lt;h2&gt;Week #4: Weather app 🌤&lt;/h2&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-a5CRKT_JCls/YFD9s6ldOkI/AAAAAAAAQQg/H29aRT1rxH8Xcinn1PwC9_vMkFRRosLtgCLcBGAsYHQ/s0/Screen%2BShot%2B2021-03-08%2Bat%2B12.01.03.png " style="display: block; padding: -10em; text-align: center; "&gt;&lt;img style= "width:125px" id="floatLeft" alt="Android 12 logo" border="0" data-original-height="784" data-original-width="784" src="https://1.bp.blogspot.com/-a5CRKT_JCls/YFD9s6ldOkI/AAAAAAAAQQg/H29aRT1rxH8Xcinn1PwC9_vMkFRRosLtgCLcBGAsYHQ/s0/Screen%2BShot%2B2021-03-08%2Bat%2B12.01.03.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt; Create a single-screen weather forecast app. You have until &lt;strong&gt;March 23rd, 23:59 PST to &lt;a href="https://developer.android.com/dev-challenge#the-latest-challenge"&gt;submit&lt;/a&gt; your entry&lt;/strong&gt;.&lt;sup id="fnref1"&gt;&lt;a href="#fn1" rel="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;/p&gt; &lt;p&gt; Your UI must be fully built in Compose. You can use fake weather data. &lt;/p&gt; &lt;br&gt; &lt;br&gt; &lt;p&gt; We will judge your submission on these four categories: &lt;/p&gt; &lt;ol&gt; &lt;li&gt;Visual beauty &lt;li&gt;Novelty of idea &lt;li&gt;Code quality &lt;li&gt;Overall execution (including accessibility) &lt;/li&gt; &lt;/ol&gt; &lt;p&gt; To help implement a beautiful design, check out the Compose documentation on &lt;a href="https://developer.android.com/jetpack/compose/layout"&gt;layouts&lt;/a&gt;, &lt;a href="https://developer.android.com/jetpack/compose/themes"&gt;theming&lt;/a&gt;, and &lt;a href="https://developer.android.com/jetpack/compose/graphics"&gt;graphics&lt;/a&gt;. Think of novel uses of &lt;a href="https://developer.android.com/jetpack/compose/animation"&gt;animations&lt;/a&gt; and &lt;a href="https://developer.android.com/jetpack/compose/gestures"&gt;gestures&lt;/a&gt;. Improve your code quality with &lt;a href="https://developer.android.com/jetpack/compose/architecture"&gt;architecture&lt;/a&gt; and &lt;a href="https://developer.android.com/jetpack/compose/testing"&gt;testing&lt;/a&gt;. And for overall execution, make sure to read about &lt;a href="https://developer.android.com/jetpack/compose/accessibility"&gt;accessibility&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; Your solution must be implemented in a public GitHub repository. Make a copy of this &lt;a href="http://goo.gle/adc-template"&gt;Github repository template&lt;/a&gt; and follow the instructions in the README. The template contains a basic &lt;code&gt;Hello World!&lt;/code&gt; in Compose and a continuous integration setup. &lt;/p&gt; &lt;p&gt; The App Submission must, at a minimum, support English language use. &lt;/p&gt; &lt;h2&gt;This week’s prize: 5 x Google Pixel 5! &lt;/h2&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-DAD8TAilkUk/YEfoRzLWl6I/AAAAAAAAQOk/bRd3MWqjvBkS_s2xeDTe0I8-gB48ccdOwCLcBGAsYHQ/s0/final_6047e805d10b3b00a15f1702_570686.png" style="display: block; padding: -10em; text-align: center; "&gt;&lt;img style= "width:75px" id="floatLeft" alt="Google pixel" border="0" data-original-height="784" data-original-width="784" src="https://1.bp.blogspot.com/-DAD8TAilkUk/YEfoRzLWl6I/AAAAAAAAQOk/bRd3MWqjvBkS_s2xeDTe0I8-gB48ccdOwCLcBGAsYHQ/s0/final_6047e805d10b3b00a15f1702_570686.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt; This week you have a chance of winning a Google Pixel 5, the ultimate 5G Google phone! We’ll be giving away one Google Pixel 5 for the winner of each of the four categories, and one for the best of the best submission.&lt;sup id="fnref2"&gt;&lt;a href="#fn2" rel="footnote"&gt;2&lt;/a&gt;&lt;/sup&gt; &lt;/p&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;h2&gt;Help make Jetpack Compose better&lt;/h2&gt; &lt;p&gt; Community is at the heart of Jetpack Compose and your feedback helps us build a better product: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;File issues with Jetpack Compose on the official &lt;a href="http://goo.gle/compose-feedback"&gt;issue tracker&lt;/a&gt;. &lt;li&gt;&lt;a href="https://g.co/userresearch/androiddev21"&gt;Sign up&lt;/a&gt; to be part of the Jetpack Compose research studies. &lt;/li&gt; &lt;/ul&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/sZK3HSX4cRU" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt; &lt;!-- Footnotes themselves at the bottom. --&gt; &lt;h2&gt;Notes&lt;/h2&gt; &lt;div class="footnotes"&gt; &lt;hr&gt; &lt;ol&gt;&lt;li id="fn1"&gt; &lt;p&gt; Please review &lt;a href="http://goo.gle/dev-challenge-terms"&gt;the link for the full official rules&lt;/a&gt; associated with the entry.&amp;nbsp;&lt;a href="#fnref1" rev="footnote"&gt;&amp;#8617;&lt;/a&gt;&lt;li id="fn2"&gt; &lt;p&gt; If you don’t live in a country where the &lt;a href="https://support.google.com/store/answer/2462844?hl=en"&gt;Pixel 5 is available&lt;/a&gt;, when you win we’ll instead send you an electronics gift card valued at US$699.&amp;nbsp;&lt;a href="#fnref2" rev="footnote"&gt;&amp;#8617;&lt;/a&gt; &lt;/ol&gt;&lt;/div&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=bBGavvK5jmE:d3F-JPLguro:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=bBGavvK5jmE:d3F-JPLguro:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=bBGavvK5jmE:d3F-JPLguro:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/bBGavvK5jmE" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-S_1wUTw7pNA/YFECtBI7KJI/AAAAAAAAQQo/Y8QSKwU7jIMSZ6290wQfxkDaBhwMHMgzgCLcBGAsYHQ/s72-c/final_6051019297e1390076a5e6ab_222819.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/03/android-dev-challenge-4.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-8891244496642545970
   </id>
   <published>
    2021-03-16T08:00:00.004-07:00
   </published>
   <updated>
    2021-03-16T08:14:44.416-07:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="Apps" />
   <category scheme="http://www.blogger.com/atom/ns#" term="developer success" />
   <category scheme="http://www.blogger.com/atom/ns#" term="developers" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Google Play" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <category scheme="http://www.blogger.com/atom/ns#" term="service fees" />
   <title type="text">Boosting developer success on Google Play </title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-AVwnqEsxp7Y/YEwHMnaKYkI/AAAAAAAAQPk/XB6r-ApAW9oHD78jB4P8JejVYbjLDKnEACLcBGAsYHQ/s0/play%2Blogo.png"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-AVwnqEsxp7Y/YEwHMnaKYkI/AAAAAAAAQPk/XB6r-ApAW9oHD78jB4P8JejVYbjLDKnEACLcBGAsYHQ/s0/play%2Blogo.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Sameer Samat, VP, Product Management&lt;/em&gt;&lt;p&gt; &lt;p&gt; Helping developers build sustainable businesses is a core part of Google Play’s mission. We work with partners every day to understand the challenges they face and help them bring their innovative ideas to life. Getting a new app off the ground and into orbit is not easy! To aid their quest for growth we provide a broad range of support, from powerful &lt;a href="https://play.google.com/console/about/grow-your-audience/"&gt;marketing tools&lt;/a&gt; and &lt;a href="https://android-developers.googleblog.com/2021/03/google-play-console-powers-better.html"&gt;actionable data in the Play Console&lt;/a&gt;, education via &lt;a href="https://playacademy.exceedlms.com/student/catalog"&gt;Play Academy&lt;/a&gt;,&lt;a href="https://medium.com/googleplaydev "&gt; best practices&lt;/a&gt; and &lt;a href="https://developer.android.com/podcasts/apps-games-insights"&gt;thought leadership&lt;/a&gt; resources, programs such as the &lt;a href="https://android-developers.googleblog.com/2020/07/the-winners-of-google-play-indie-games.html"&gt;Indie Games Festival&lt;/a&gt;, &lt;a href="https://play.google.com/store/apps/editorial_collection/promotion_topic_b000054_games_indie_corner_tp?hl=en_GB&amp;gl=US"&gt;Indie Corner&lt;/a&gt;, and &lt;a href="https://developers.google.com/community/accelerators"&gt;accelerator programs&lt;/a&gt; around the world. We’re always looking for new ways to give them an added boost. &lt;/p&gt; &lt;p&gt; Starting on July 1, 2021 we are reducing the service fee Google Play receives when a developer sells digital goods or services to 15% for the first $1M (USD) of revenue every developer earns each year. With this change, 99% of developers globally that sell digital goods and services with Play will see a 50% reduction in fees. These are funds that can help developers scale up at a critical phase of their growth by hiring more engineers, adding to their marketing staff, increasing server capacity, and more. &lt;/p&gt; &lt;p&gt; While these investments are most critical when developers are in the earlier stages of growth, scaling an app doesn’t stop once a partner has reached $1M in revenue — we’ve heard from our partners making $2M, $5M and even $10M a year that their services are still on a path to self-sustaining orbit. This is why we are making this reduced fee on the first $1M of total revenue earned each year available to every Play developer, regardless of size. We believe this is a fair approach that aligns with Google’s broader mission to help all developers succeed. We look forward to sharing full details in the coming months. &lt;/p&gt; &lt;p&gt; As a platform we do not succeed unless our partners succeed. Android and Google Play have always listened to our developer partners from around the world and we continue to take their input into account as we build and run the ecosystem. We look forward to seeing more businesses scale to new heights on Android, and to further discussions with our developer community to find new ways to support them technically and economically as they build their businesses. &lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=ywEhT974TuU:tyXo_Mihayk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=ywEhT974TuU:tyXo_Mihayk:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=ywEhT974TuU:tyXo_Mihayk:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/ywEhT974TuU" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-AVwnqEsxp7Y/YEwHMnaKYkI/AAAAAAAAQPk/XB6r-ApAW9oHD78jB4P8JejVYbjLDKnEACLcBGAsYHQ/s72-c/play%2Blogo.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/03/boosting-dev-success.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-4816531741912174914
   </id>
   <published>
    2021-03-12T09:00:00.001-08:00
   </published>
   <updated>
    2021-03-12T09:00:09.303-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="Android" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Developer" />
   <category scheme="http://www.blogger.com/atom/ns#" term="AndroidX" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Wear OS" />
   <title type="text">Creating custom Tiles on Wear OS by Google with the Jetpack Tiles library</title>
   <content type="html">
    &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/lojanda"&gt;Jolanda Verhoef&lt;/a&gt;, Developer Relations Engineer&lt;/em&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-DSDGYNsZaxM/YEuUtUcECzI/AAAAAAAAQPE/NRSM2Brqtog0vtlHiDgIf2D4YVo16VK_wCLcBGAsYHQ/s0/Android-Announcing-Wear-OS-Tiles-Alpha-social-V2.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Wear OS header" border="0" data-original-height="1027" data-original-width="2048" src="https://1.bp.blogspot.com/-DSDGYNsZaxM/YEuUtUcECzI/AAAAAAAAQPE/NRSM2Brqtog0vtlHiDgIf2D4YVo16VK_wCLcBGAsYHQ/s0/Android-Announcing-Wear-OS-Tiles-Alpha-social-V2.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt; We &lt;a href="https://blog.google/products/wear-os/tiles-wear-os-google/"&gt;introduced Tiles in 2019&lt;/a&gt;, and since then, Tiles have become one of the most helpful and useful features on Wear OS by Google smartwatches. They are fast to access, convenient, and designed to provide users with swipeable access to the things they need to know and get done right from their wrist. This also gives users control over what information and actions they want to see. &lt;/p&gt; &lt;p&gt; Today, we're excited to announce that the &lt;a href="https://developer.android.com/training/articles/wear-tiles"&gt;Jetpack Tiles library&lt;/a&gt; is in alpha. This library enables developers to create custom Tiles on Wear OS smartwatches. These custom Tiles will become available to users later this Spring when we roll out the corresponding Wear OS platform update. &lt;/p&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-oeswRpsmMEQ/YEuXPHK7SZI/AAAAAAAAQPU/8Cg9VvjRqAcXv1JPEpF_3ZKfUKKtw6FzQCLcBGAsYHQ/s0/final_604b96c373a68300b7cfa2c2_502404.gif" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:50%" alt="Wear OS interface" border="0" data-original-height="740" data-original-width="740" src="https://1.bp.blogspot.com/-oeswRpsmMEQ/YEuXPHK7SZI/AAAAAAAAQPU/8Cg9VvjRqAcXv1JPEpF_3ZKfUKKtw6FzQCLcBGAsYHQ/s0/final_604b96c373a68300b7cfa2c2_502404.gif"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt; &lt;p&gt; Tiles can be designed for many use cases, like tracking the user’s daily activity progress, quick-starting a workout, starting a recently played song, or sending a message to a favorite contact. While apps can be immersive, Tiles are fast-loading and focus on the user's immediate needs. If the user would like more information, Tiles can be tapped to open a related app on the watch or phone for a deeper experience. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-Yl0tC36k5RA/YEuS_YO0bGI/AAAAAAAAQO8/t2jcA5U9SOAZB5_4c1xwfdE54ogji8NjACLcBGAsYHQ/s0/Tiles_alpaha_layout2.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Tile designs from Figma" border="0" data-original-height="900" data-original-width="1600" src="https://1.bp.blogspot.com/-Yl0tC36k5RA/YEuS_YO0bGI/AAAAAAAAQO8/t2jcA5U9SOAZB5_4c1xwfdE54ogji8NjACLcBGAsYHQ/s0/Tiles_alpaha_layout2.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h2&gt;Getting started&lt;/h2&gt; &lt;p&gt; Tiles are built using Android Studio, as part of your Wear OS application. Start by adding the Wear OS Tiles dependencies: &lt;/p&gt; &lt;pre&gt;&lt;code&gt;dependencies { implementation "androidx.wear:wear-tiles:1.0.0-alpha01" debugImplementation "androidx.wear:wear-tiles-renderer:1.0.0-alpha01" }&lt;/code&gt;&lt;/pre&gt; &lt;p&gt; The first dependency includes the library you need to create a Tile, while the second dependency lets you preview the Tile in an activity. &lt;/p&gt; &lt;p&gt;Next, provide the information to render the Tile using the &lt;code&gt;&lt;a href="https://developer.android.com/reference/androidx/wear/tiles/TileProviderService"&gt;TileProviderService&lt;/a&gt;&lt;/code&gt;:&lt;/p&gt; &lt;pre&gt;&lt;code&gt;class MyTileService : TileProviderService() { override fun onTileRequest(requestParams: RequestReaders.TileRequest) = Futures.immediateFuture(Tile.builder() .setResourcesVersion("1") .setTimeline(Timeline.builder().addTimelineEntry( // For more information about timelines, see the docs TimelineEntry.builder().setLayout( Layout.builder().setRoot( Text.builder().setText("Hello world!") ) ) ) ).build()) override fun onResourcesRequest(requestParams: ResourcesRequest) = Futures.immediateFuture(Resources.builder() .setVersion("1") .build() ) }&lt;/code&gt;&lt;/pre&gt; &lt;p&gt; There are two important parts to this code: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;code&gt;onTileRequest()&lt;/code&gt; creates your Tile layout. This is where most of your code goes. You can use multiple &lt;code&gt;&lt;a href="https://developer.android.com/reference/androidx/wear/tiles/builders/TimelineBuilders.TimelineEntry"&gt;TimelineEntry&lt;/a&gt;&lt;/code&gt; instances to render different layouts for &lt;a href="https://developer.android.com/training/articles/wear-tiles#timebound-timeline"&gt;different points in time&lt;/a&gt;.&lt;br&gt; &lt;li&gt;&lt;code&gt;onResourcesRequest()&lt;/code&gt; passes any resources needed to render your Tile. If you decide to add any graphics, include them here. &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; Create a simple activity to preview your Tile. Add this activity in &lt;code&gt;src/debug&lt;/code&gt; instead of &lt;code&gt;src/main&lt;/code&gt;, as this activity is only used for debugging/previewing purposes. &lt;/p&gt; &lt;pre&gt;&lt;code&gt;class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val rootLayout = findViewById&amp;lt;FrameLayout&amp;gt;(R.id.tile_container) TileManager( context = this, component = ComponentName(this, MyTileService::class.java), parentView = rootLayout ).create() } }&lt;/code&gt;&lt;/pre&gt; &lt;p&gt; Now you’re ready to publish your Tile. For more information on how to do that, and to learn more about Tiles, read our &lt;a href="https://developer.android.com/training/articles/wear-tiles"&gt;new guide&lt;/a&gt; and take a look at our &lt;a href="https://github.com/android/wear-os-samples/tree/main/WearTilesKotlin"&gt;sample Tiles&lt;/a&gt; to see them in action. &lt;/p&gt; &lt;p&gt; The Jetpack Tiles library is in alpha, and we want &lt;a href="https://issuetracker.google.com/issues/new?component=460965&amp;template=1422653"&gt;your feedback&lt;/a&gt; to help us improve the API. Happy coding! &lt;/p&gt; &lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=YGwVP_qYyN8:P7JPJ7q5KRc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=YGwVP_qYyN8:P7JPJ7q5KRc:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=YGwVP_qYyN8:P7JPJ7q5KRc:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/YGwVP_qYyN8" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-DSDGYNsZaxM/YEuUtUcECzI/AAAAAAAAQPE/NRSM2Brqtog0vtlHiDgIf2D4YVo16VK_wCLcBGAsYHQ/s72-c/Android-Announcing-Wear-OS-Tiles-Alpha-social-V2.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/03/creating-custom-tiles-on-wear-os-by-google-with-jetpack-tiles.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-5645796345935929171
   </id>
   <published>
    2021-03-10T09:58:00.003-08:00
   </published>
   <updated>
    2021-03-13T08:55:14.707-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="#Android" />
   <category scheme="http://www.blogger.com/atom/ns#" term="#AndroidDevChallenge" />
   <category scheme="http://www.blogger.com/atom/ns#" term="#JetpackCompose" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android app development" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <title type="text">Android Dev Challenge: Week 3 - Speed round</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-FGiFOdkmjAc/YEfrP8QttpI/AAAAAAAAQOs/a7yd3EkJOJAJRWi2ZcaQfWr72_hT_m9YQCLcBGAsYHQ/s0/final_6047e963432a7600369c4068_160377.png"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-FGiFOdkmjAc/YEfrP8QttpI/AAAAAAAAQOs/a7yd3EkJOJAJRWi2ZcaQfWr72_hT_m9YQCLcBGAsYHQ/s0/final_6047e963432a7600369c4068_160377.png"&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/Lojanda"&gt;Jolanda Verhoef&lt;/a&gt;, Developer Relations Engineer &lt;/em&gt;&lt;p&gt; &lt;p&gt; On your marks...Get set… Wait a second! Save the date for the third week of the &lt;a href="http://developer.android.com/dev-challenge"&gt;#AndroidDevChallenge&lt;/a&gt;! On &lt;strong&gt;March 13th&lt;/strong&gt;, compete with other developers in your time zone; the fastest Compose skills wins! We loved all the creative submissions of week #1 and #2, but now we’re looking for speed. Here’s your challenge: &lt;/p&gt; &lt;h2&gt;Week #3 - Speed round 🏎&lt;/h2&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-U2Hhq7YUKrk/YEfnj-qc4BI/AAAAAAAAQOU/16zZYPjjY-gx3xjm3ZFAAS5Fl7J6K-z4QCLcBGAsYHQ/s0/Speed%2Bround%2B1.png" style="display: block; padding: -10em; text-align: center; "&gt;&lt;img style= "width:200px" id="floatLeft" alt="Android 12 logo" border="0" data-original-height="784" data-original-width="784" src="https://1.bp.blogspot.com/-U2Hhq7YUKrk/YEfnj-qc4BI/AAAAAAAAQOU/16zZYPjjY-gx3xjm3ZFAAS5Fl7J6K-z4QCLcBGAsYHQ/s0/Speed%2Bround%2B1.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt; Be the fastest to implement a set of designs provided by us. The designs will be posted here when the challenge starts. &lt;a href="https://developer.android.com/dev-challenge#the-latest-challenge"&gt;Submit&lt;/a&gt; your entry* as soon as you finish implementing the designs. &lt;/p&gt; &lt;p&gt; We’ll post different designs at 3 different times on the 13th: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="https://github.com/android/android-dev-challenge-compose/blob/assets/Bloom.zip"&gt;APAC-friendly:&lt;/a&gt; opens at 9AM UTC+8 &lt;li&gt;&lt;a href="https://github.com/android/android-dev-challenge-compose/blob/assets/MySoothe.zip"&gt;EMEA-friendly:&lt;/a&gt; opens at 9AM UTC &lt;li&gt;&lt;a href="https://github.com/android/android-dev-challenge-compose/blob/assets/WeTrade.zip"&gt;Americas-friendly&lt;/a&gt;: opens at 9AM UTC-8 &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; We’ll update this blog post at the beginning of each round with the link to the designs. &lt;/p&gt; &lt;p&gt; Your UI must be fully built in Compose, and strictly match all the guidelines specified in the designs. To help you with the implementation, check out the Compose documentation on &lt;a href="https://developer.android.com/jetpack/compose/themes"&gt;theming&lt;/a&gt;, &lt;a href="https://developer.android.com/jetpack/compose/layout"&gt;layouts&lt;/a&gt;, and &lt;a href="https://developer.android.com/jetpack/compose/navigation"&gt;navigation&lt;/a&gt;. For some hands-on learning try out the &lt;a href="https://goo.gle/compose-pathway"&gt;Compose pathway&lt;/a&gt;, with codelabs covering several topics useful for completing this challenge. &lt;/p&gt; &lt;p&gt; Your solution must be implemented in a GitHub repository. Make a copy of this &lt;a href="http://goo.gle/adc-template"&gt;Github repository template&lt;/a&gt; and follow the instructions in the README. The template contains a basic &lt;code&gt;Hello World!&lt;/code&gt; in Compose and a continuous integration setup. &lt;/p&gt; &lt;h2&gt;This week’s prize: a Google Pixel 5! &lt;/h2&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-DAD8TAilkUk/YEfoRzLWl6I/AAAAAAAAQOk/bRd3MWqjvBkS_s2xeDTe0I8-gB48ccdOwCLcBGAsYHQ/s0/final_6047e805d10b3b00a15f1702_570686.png" style="display: block; padding: -10em; text-align: center; "&gt;&lt;img style= "width:85px" id="floatLeft" alt="Android 12 logo" border="0" data-original-height="784" data-original-width="784" src="https://1.bp.blogspot.com/-DAD8TAilkUk/YEfoRzLWl6I/AAAAAAAAQOk/bRd3MWqjvBkS_s2xeDTe0I8-gB48ccdOwCLcBGAsYHQ/s0/final_6047e805d10b3b00a15f1702_570686.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt; For this week’s challenge, we’re giving away a Google Pixel 5, the ultimate 5G Google phone. In fact, we’ll be giving away three Google Pixel 5 phones: one to each developer who is fastest to submit a successfully implemented design for each of the three rounds of challenges.* &lt;/p&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;h2&gt;Help make Jetpack Compose better&lt;/h2&gt; &lt;p&gt; Community is at the heart of Jetpack Compose and your feedback helps us build a better product: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;File issues with Jetpack Compose on the official &lt;a href="http://goo.gle/compose-feedback"&gt;issue tracker&lt;/a&gt;. &lt;li&gt;&lt;a href="https://g.co/userresearch/androiddev21"&gt;Sign up&lt;/a&gt; to be part of the Jetpack Compose research studies. &lt;/li&gt; &lt;/ul&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/sZK3HSX4cRU" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;/center&gt; &lt;p&gt; &lt;small&gt; *Please review &lt;a href="http://goo.gle/dev-challenge-terms"&gt;the link for the full official rules&lt;/a&gt; associated with the entry.&amp;nbsp;&lt;a href="#fnref1" rev="footnote"&gt;&amp;#8617;&lt;/a&gt;&lt;/small&gt; &lt;/p&gt; &lt;p&gt; &lt;small&gt; *If you don’t live in a country where the Pixel 5 is available, when you win we’ll instead send you an electronics gift card valued at US$699. &lt;/small&gt; &lt;p&gt; &lt;/ol&gt;&lt;/div&gt; &lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=pxI-pAQ1FTQ:rWw1heNwxBY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=pxI-pAQ1FTQ:rWw1heNwxBY:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=pxI-pAQ1FTQ:rWw1heNwxBY:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/pxI-pAQ1FTQ" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-FGiFOdkmjAc/YEfrP8QttpI/AAAAAAAAQOs/a7yd3EkJOJAJRWi2ZcaQfWr72_hT_m9YQCLcBGAsYHQ/s72-c/final_6047e963432a7600369c4068_160377.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/03/android-dev-challenge-3.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-3377849752476967159
   </id>
   <published>
    2021-03-05T10:00:00.005-08:00
   </published>
   <updated>
    2021-03-15T15:54:54.919-07:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="Android audio latency" />
   <category scheme="http://www.blogger.com/atom/ns#" term="musician apps" />
   <category scheme="http://www.blogger.com/atom/ns#" term="pro audio" />
   <category scheme="http://www.blogger.com/atom/ns#" term="real-time audio" />
   <category scheme="http://www.blogger.com/atom/ns#" term="virtual instruments" />
   <title type="text">An update on Android's audio latency </title>
   <content type="html">
    &lt;meta content="https://1.bp.blogspot.com/-SoP_7OT6zGo/YEJnBCQPS1I/AAAAAAAAQN8/pRLz9614wPQRykezF7cjncWvvpFTFFiFwCLcBGAsYHQ/s0/Android-update-on-audio-latency.png" name="twitter:image"&gt;&lt;/meta&gt; &lt;img src="https://1.bp.blogspot.com/-SoP_7OT6zGo/YEJnBCQPS1I/AAAAAAAAQN8/pRLz9614wPQRykezF7cjncWvvpFTFFiFwCLcBGAsYHQ/s0/Android-update-on-audio-latency.png" style="display: none;" /&gt; &lt;p&gt;&lt;em&gt;Posted by Don Turner - Android Developer Relations Engineer&lt;/em&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-SoP_7OT6zGo/YEJnBCQPS1I/AAAAAAAAQN8/pRLz9614wPQRykezF7cjncWvvpFTFFiFwCLcBGAsYHQ/s0/Android-update-on-audio-latency.png" style="display: block; padding: 1em 0px; text-align: center;"&gt;&lt;img alt="Header image of audio waves going through phone" border="0" data-original-height="968" data-original-width="3250" src="https://1.bp.blogspot.com/-SoP_7OT6zGo/YEJnBCQPS1I/AAAAAAAAQN8/pRLz9614wPQRykezF7cjncWvvpFTFFiFwCLcBGAsYHQ/s0/Android-update-on-audio-latency.png" style="width: 100%;" /&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt; This article takes a look at what's changed in the Android ecosystem for audio developers recently, the audio latency of popular Android devices, and discusses Android's suitability for real-time audio apps. &lt;/p&gt; &lt;h2&gt;What's changed?&lt;/h2&gt; &lt;p&gt; Over the past four years we have taken a number of actions that have improved audio latency. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-VAb0sVJS41w/YE_lpC5fwRI/AAAAAAAAQQU/ihhetZszATUCz1UuvMRDObl8Kx1T2n7_QCLcBGAsYHQ/s0/aaudio.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="timeline of key events which have had an impact on the audio latency of Android devices. Pre-2017: Google working directly with OEMs to reduce audio latency. Start 2017: AAudio - new high-performance audio API is released. Mid-2018: Oboe - an open source, C++ wrapper for AAudio and OpenSL ES is released. Mid 2019: Pixel 3A is the first 10ms Android phone. Mid 2020: OpenSL ES is deprecated. Start 2021: Oboe has 4bn+ installs" border="0" data-original-height="900" data-original-width="1600" src="https://1.bp.blogspot.com/-VAb0sVJS41w/YE_lpC5fwRI/AAAAAAAAQQU/ihhetZszATUCz1UuvMRDObl8Kx1T2n7_QCLcBGAsYHQ/s0/aaudio.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h2&gt;Latency reduction&lt;/h2&gt; &lt;p&gt; These actions, coupled with a renewed focus from device manufacturers on audio latency, have led to significant improvements in the device ecosystem. The average latency of the most popular Android phones has dropped to under 40ms, which is well within the range required for real-time applications. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-VqGMk9xtzW4/YDboJ5iDsZI/AAAAAAAAQJQ/3DU5kl_c-awndCSzUwF59PDgxsMrcGmMQCLcBGAsYHQ/s0/image%2B3.png" style="display: block; padding: 1em 0px; text-align: center;"&gt;&lt;img alt="bar graph showing average audio latency of 20 most popular Android phones. In Jan 2017 it was 109 milliseconds. In Jan 2021 it was 39 milliseconds." border="0" data-original-height="946" data-original-width="1290" src="https://1.bp.blogspot.com/-VqGMk9xtzW4/YDboJ5iDsZI/AAAAAAAAQJQ/3DU5kl_c-awndCSzUwF59PDgxsMrcGmMQCLcBGAsYHQ/s0/image%2B3.png" style="width: 100%;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;device popularity source: &lt;a href="https://www.appbrain.com/stats/top-android-phones"&gt;appbrain.com&lt;/a&gt;&lt;/p&gt; &lt;h2&gt;Greater consistency&lt;/h2&gt; &lt;p&gt;Digging into the data we can see that in 2017 there was a significant difference between the highest and lowest values (222ms).&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-Ic_vdBVC5HM/YDbpBT2nnAI/AAAAAAAAQJY/aPJLmTFxUX8BDA5OaiZ1MHE6YDilcP-uQCLcBGAsYHQ/s0/image%2B4.png" style="display: block; padding: 1em 0px; text-align: center;"&gt;&lt;img alt="bar graph showing audio latency of most popular Android phones in Jan 2017. There are 19 in total, all of which are Samsung Galaxy models. The average latency is 109ms, smallest value is 36ms, highest is 258ms, range is 222ms." border="0" data-original-height="694" data-original-width="1240" src="https://1.bp.blogspot.com/-Ic_vdBVC5HM/YDbpBT2nnAI/AAAAAAAAQJY/aPJLmTFxUX8BDA5OaiZ1MHE6YDilcP-uQCLcBGAsYHQ/s0/image%2B4.png" style="width: 100%;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;device popularity source: &lt;a href="https://www.appbrain.com/stats/top-android-phones"&gt;appbrain.com&lt;/a&gt;&lt;/p&gt; &lt;p&gt; Compare that to the data for 2021. The range has reduced by a factor of 8 to just 28ms, providing a far more consistent audio experience. This is more impressive when you consider that there are now multiple OEMs on the most-popular list, compared to only a single manufacturer in 2017. In addition, many of the devices on the list are not high-end flagship models. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-ZycUtpkWu8I/YDbpmeIYajI/AAAAAAAAQJg/FMR0U_HG6x0jd1tFggfZDVZ2jmQw_d1wACLcBGAsYHQ/s0/image%2B5.png" style="display: block; padding: 1em 0px; text-align: center;"&gt;&lt;img alt="bar graph showing audio latency of most popular Android phones in Jan 2021. There are 20 in total, with models from Samsung, Redmi, Oppo, Huawei and Vivo. The average latency is 39ms, smallest value is 28ms, highest is 56ms, range is 28ms." border="0" data-original-height="674" data-original-width="1180" src="https://1.bp.blogspot.com/-ZycUtpkWu8I/YDbpmeIYajI/AAAAAAAAQJg/FMR0U_HG6x0jd1tFggfZDVZ2jmQw_d1wACLcBGAsYHQ/s0/image%2B5.png" style="width: 100%;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p id="imgCaption"&gt;device popularity source: &lt;a href="https://www.appbrain.com/stats/top-android-phones"&gt;appbrain.com&lt;/a&gt;&lt;/p&gt; &lt;h2&gt;Tap-to-tone latency&lt;/h2&gt; &lt;p&gt; Up to now I've been referring to round-trip audio latency. Round-trip latency involves three components in the audio chain: audio input, audio processing and audio output. &lt;/p&gt; &lt;p&gt; Many real-time audio apps generate audio from screen tap events rather than relying on input audio. These kinds of apps are sensitive to "tap-to-tone" latency - the time taken from tapping on the screen to hearing a sound. The latency introduced by tapping &lt;a href="https://github.com/google/walt/blob/master/docs/TapLatency.md"&gt;the touch screen is anywhere from 10-35ms&lt;/a&gt;, with 20ms being fairly typical on modern Android devices. &lt;/p&gt; &lt;p&gt; To estimate tap-to-tone latency given round-trip latency, you can subtract the audio input latency (typically 5ms), and add the touch latency (typically 20ms). In other words, add 15ms to the round-trip latency. Given the numbers above, this means the average tap-to-tone latency of the most popular android phones is also well under that required for most real-time audio applications. &lt;/p&gt; &lt;h2&gt;Looking to the future&lt;/h2&gt; &lt;p&gt; Despite the significant reductions in audio latency across the Android ecosystem our work is nowhere near complete. 20ms round-tip latency is required for&lt;a href="https://source.android.com/compatibility/11/android-11-cdd#5_10_professional_audio"&gt; Android professional audio apps&lt;/a&gt;, and 10ms remains the long term goal. And at this time some less popular devices still have high audio latency. However, if you have been holding back on developing an Android app because of audio latency, it might be time to reconsider. &lt;/p&gt; &lt;p&gt; To get started, check out the &lt;a href="https://github.com/google/oboe/blob/master/docs/GettingStarted.md"&gt;Oboe getting started guide&lt;/a&gt; or &lt;a href="https://www.youtube.com/watch?v=csfHAbr5ilI&amp;amp;list=PLWz5rJ2EKKc_duWv9IPNvx9YBudNMmLSa"&gt;video tutorials&lt;/a&gt;. &lt;/p&gt; &lt;h2&gt;Data sources and tools&lt;/h2&gt; &lt;p&gt; &lt;a href="https://github.com/google/oboe/tree/master/apps/OboeTester/docs"&gt;OboeTester&lt;/a&gt; &lt;/p&gt; &lt;p&gt; &lt;a href="https://github.com/google/walt"&gt;WALT&lt;/a&gt; &lt;/p&gt; &lt;p&gt; &lt;a href="http://appbrain.com"&gt;appbrain.com&lt;/a&gt; &lt;/p&gt; &lt;p&gt; &lt;a href="http://superpowered.com/latency"&gt;superpowered.com/latency&lt;/a&gt; &lt;/p&gt; &lt;p&gt; &lt;a href="http://gsmarena.com"&gt;gsmarena.com&lt;/a&gt; &lt;/p&gt; &lt;p&gt; &lt;a href="http://juce.com/maq"&gt;juce.com/maq&lt;/a&gt; &lt;/p&gt; &lt;p&gt; various internal data sources &lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=aDcS6zs7H00:l00vamtWRlk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=aDcS6zs7H00:l00vamtWRlk:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=aDcS6zs7H00:l00vamtWRlk:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/aDcS6zs7H00" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-SoP_7OT6zGo/YEJnBCQPS1I/AAAAAAAAQN8/pRLz9614wPQRykezF7cjncWvvpFTFFiFwCLcBGAsYHQ/s72-c/Android-update-on-audio-latency.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/03/an-update-on-androids-audio-latency.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-7421323723955379408
   </id>
   <published>
    2021-03-04T09:59:00.001-08:00
   </published>
   <updated>
    2021-03-04T09:59:53.851-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="android developers" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Google Play" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Google Play Console" />
   <title type="text">Sub-dollar pricing expansion in 20 markets</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-jkTn2ZC7zIU/YD_sw3mEKPI/AAAAAAAAQNs/XXGD0lIZOukqTELwRlVGkv19n2ZJkvHKgCLcBGAsYHQ/s0/google-play-sub-dollar-pricing-v3.png"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-jkTn2ZC7zIU/YD_sw3mEKPI/AAAAAAAAQNs/XXGD0lIZOukqTELwRlVGkv19n2ZJkvHKgCLcBGAsYHQ/s0/google-play-sub-dollar-pricing-v3.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Neethi Thomas, Dafna Gal and Ashnil Dixit, Google Play &lt;/em&gt;&lt;p&gt; &lt;p&gt; At Google Play, we’re committed to giving Android developers access to the largest possible market for your apps and games. Google Play already supports free and paid apps in over 165 markets. We had previously lowered minimum prices developers can set for their products for 20 markets like India and Brazil. Today, we’re happy to announce that we have reduced the &lt;a href="https://support.google.com/googleplay/android-developer/table/3541286"&gt;minimum price limit for products in 20 more markets&lt;/a&gt; across Latin America, EMEA, and APAC. &lt;/p&gt; &lt;p&gt; With these new lower limits, you can now set prices in the range of 10-30 cents US equivalent in most of these markets. These ultra-low price points, or “sub-dollar” prices, allow you to reach new potential buyers by adjusting your pricing to better reflect local purchasing power and demand. It also gives you more flexibility to set your global pricing strategy and gives more users the opportunity to enjoy monetized experiences in your apps and games.&lt;br&gt;&lt;br&gt;The minimum price limit for paid apps, in-app products, and subscriptions has been lowered in these new markets: Bangladesh, Bulgaria, Bolivia, Costa Rica, Czech Republic, Denmark, Croatia, Hungary, Jordan, Kazakhstan, Lebanon, Sri Lanka, Myanmar, Pakistan, Paraguay, Romania, Serbia, Thailand, Tanzania and Vietnam. &lt;/p&gt; &lt;p&gt; Additional markets where sub-dollar pricing is available: Brazil, Chile, Colombia, Egypt, India, Indonesia, Malaysia, Mexico, Nigeria, Peru, Philippines, Poland, Russia, Saudi Arabia, South Africa, Turkey and Ukraine&lt;br&gt;&lt;br&gt;To adjust your prices in Google Play Console, please see our &lt;a href="https://support.google.com/googleplay/android-developer/answer/6334373"&gt;Help Center article&lt;/a&gt;. The full list of price ranges can be found &lt;a href="https://support.google.com/googleplay/android-developer/table/3541286?rd=1"&gt;here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;&lt;br&gt;Best practices for sub-dollar pricing&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; Since the feature was introduced in 2015, Android developers have been using sub-dollar pricing to expand their paying user base in creative ways. Here are a few ways you can use sub-dollar pricing to help grow your own business: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Try offering limited-time promotions. &lt;/strong&gt;Sub-dollar pricing is a great tool to entice new users through promotions, or to reward loyal users with low-cost perks. For example, to convert more paying users of their popular game &lt;a href="https://play.google.com/store/apps/details?id=com.igg.android.lordsmobile"&gt;Lords Mobile&lt;/a&gt;, developer IGG sometimes offers special bundles for only IDR 3000 (USD 0.20) that offer 2-3x more value for a limited time. Because these are special offers, it allowed them to expand their payer base without cannibalization.&lt;br&gt; &lt;li&gt;&lt;strong&gt;Offer seasonal deals. &lt;/strong&gt;Sub-dollar pricing is also useful for seasonal sales. Because users know they have a limited opportunity to buy these items, it makes them more attractive. Combined with the low price, it can be an attractive offer for first time buyers. Moonton offers rare skins when users make their first purchase of the season in Mobile Legends, even if it’s a sub-dollar purchase.&lt;br&gt; &lt;li&gt;&lt;strong&gt;Try introductory pricing offers. &lt;/strong&gt;Sub-dollar pricing can also be used to attract new paying users with introductory pricing. For example, you could offer users who have never made a purchase a valuable item at a sub-dollar price. Developer Moonton does this, offering users access to popular heroes in their game &lt;a href="https://play.google.com/store/apps/details?id=com.mobile.legends"&gt;Mobile Legends: Bang Bang&lt;/a&gt; when they make their first purchase. This strategy helps them reach new paying users without much impact on their overall game economy. &lt;br&gt; &lt;li&gt;&lt;strong&gt;Reward loyalty. &lt;/strong&gt;You can also try sub-dollar pricing in conjunction with repeat purchase events. For example, you could offer special bonuses to players making one purchase a day for seven days, without users spending more than they are comfortable with. &lt;br&gt; &lt;li&gt;&lt;strong&gt;Offer gacha. &lt;/strong&gt;Sub-dollar pricing works well for chance-based items, or “gacha,” which can appeal to new users. Users who aren’t willing to spend $5 on a valuable in-game item may be willing to pay $0.15 to open a treasure chest with a chance of finding the item inside. By offering gacha at sub-dollar pricing, many users may be willing to pay a token amount just to try their luck. &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; &lt;br&gt;There are many ways to use sub-dollar and localized pricing and the suggestions listed above are just a starting point. We’re excited to see how you’ll use our features to grow your business. &lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=Ihp8sWyowEk:k1Y6eX51ozQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=Ihp8sWyowEk:k1Y6eX51ozQ:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=Ihp8sWyowEk:k1Y6eX51ozQ:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/Ihp8sWyowEk" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-jkTn2ZC7zIU/YD_sw3mEKPI/AAAAAAAAQNs/XXGD0lIZOukqTELwRlVGkv19n2ZJkvHKgCLcBGAsYHQ/s72-c/google-play-sub-dollar-pricing-v3.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/03/sub-dollar-pricing-expansion-in-20.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-852193565820309067
   </id>
   <published>
    2021-03-03T09:06:00.008-08:00
   </published>
   <updated>
    2021-03-03T09:12:01.674-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="#AndroidDevChallenge" />
   <category scheme="http://www.blogger.com/atom/ns#" term="#JetpackCompose" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android app development" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <title type="text">Android Dev Challenge: Week 2 - Countdown timer</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-wdX0HWD4NQ4/YD05oI2XzkI/AAAAAAAAQM0/oiZ-LcNjyhA1pcvEgZxg01cG-3taOnggACLcBGAsYHQ/s0/ADC_Comp_Mockup_1%2B%25281%2529.jpg"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-wdX0HWD4NQ4/YD05oI2XzkI/AAAAAAAAQM0/oiZ-LcNjyhA1pcvEgZxg01cG-3taOnggACLcBGAsYHQ/s0/ADC_Comp_Mockup_1%2B%25281%2529.jpg"&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/FMuntenescu"&gt;Florina Muntenescu&lt;/a&gt;, Developer Relations Engineer &lt;/em&gt;&lt;p&gt; &lt;p&gt; 3...2...1… Time for another challenge! Welcome to the second week of the &lt;a href="http://developer.android.com/dev-challenge"&gt;#AndroidDevChallenge&lt;/a&gt;! We loved seeing your creative submissions in week #1 so we can’t wait to see what you’ll build in week #2. Here’s your challenge: &lt;/p&gt; &lt;h2&gt;Week #2 - Countdown timer ⏲️&lt;/h2&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-FjmMtdptM4w/YD05DRdi3sI/AAAAAAAAQMs/zmSI06RreigcRwK4g3qZXy2caLzgz1O7ACLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-19%2Bat%2B15.30.48.png" style="display: block; padding: -10em; text-align: center; "&gt;&lt;img style= "width:200px" id="floatLeft" alt="Android 12 logo" border="0" data-original-height="784" data-original-width="784" src="https://1.bp.blogspot.com/-FjmMtdptM4w/YD05DRdi3sI/AAAAAAAAQMs/zmSI06RreigcRwK4g3qZXy2caLzgz1O7ACLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-19%2Bat%2B15.30.48.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt; Create a working, single screen countdown timer. You have until &lt;strong&gt;March 9th, 23:59 PST to &lt;a href="https://developer.android.com/dev-challenge#the-latest-challenge"&gt;submit&lt;/a&gt; your entry&lt;/strong&gt;.&lt;sup id="fnref1"&gt;&lt;a href="#fn1" rel="footnote"&gt;1&lt;/a&gt;&lt;/sup&gt; &lt;/p&gt; &lt;p&gt; Your UI must be fully built in Compose. To help you with the implementation, check out the Compose documentation on &lt;a href="https://developer.android.com/jetpack/compose/state"&gt;state&lt;/a&gt; and &lt;a href="https://developer.android.com/jetpack/compose/animation"&gt;animation&lt;/a&gt;. For some hands-on learning try out the &lt;a href="https://goo.gle/compose-pathway"&gt;Compose pathway&lt;/a&gt;, with codelabs covering several topics useful for completing this challenge. &lt;/p&gt; &lt;p&gt; Your solution must be implemented in a GitHub repository. Make a copy of this &lt;a href="http://goo.gle/adc-template"&gt;Github repository template&lt;/a&gt; and follow the instructions in the README. The template contains a basic &lt;code&gt;Hello World!&lt;/code&gt; in Compose and a continuous integration setup. &lt;/p&gt; &lt;h2&gt;This week’s prize: a Compose poster pack! &lt;/h2&gt; &lt;p&gt; Our second week's prize is a work of art, where the Composing is a collaboration with you! The first 500 people to successfully complete this challenge will receive a Jetpack Compose poster and a set of Android pencils, your own stress relieving coloring experience. Plus, you'll get a limited edition Jetpack Compose comic strip poster, charting how Team Jetpack saves the galaxy from bad UI. &lt;/p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-wdX0HWD4NQ4/YD05oI2XzkI/AAAAAAAAQM0/oiZ-LcNjyhA1pcvEgZxg01cG-3taOnggACLcBGAsYHQ/s0/ADC_Comp_Mockup_1%2B%25281%2529.jpg" imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/-wdX0HWD4NQ4/YD05oI2XzkI/AAAAAAAAQM0/oiZ-LcNjyhA1pcvEgZxg01cG-3taOnggACLcBGAsYHQ/s0/ADC_Comp_Mockup_1%2B%25281%2529.jpg" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; Week #2 prize: a Jetpack Compose poster pack &lt;/p&gt; &lt;/center&gt; &lt;h2&gt;Help make Jetpack Compose better&lt;/h2&gt; &lt;p&gt; Community is at the heart of Jetpack Compose and your feedback helps us build a better product: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;File issues with Jetpack Compose on the official &lt;a href="http://goo.gle/compose-feedback"&gt;issue tracker&lt;/a&gt;. &lt;li&gt;&lt;a href="https://g.co/userresearch/androiddev21"&gt;Sign up&lt;/a&gt; to be part of the Jetpack Compose research studies. &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/sZK3HSX4cRU" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt; &lt;small&gt; &lt;p&gt; &lt;a&gt;&lt;sup&gt; 1 Please review the link for the full official rules associated with the entry. &lt;/small&gt; &lt;/p&gt; &lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=JDZJKLMBIkY:TZB-vQpiGKc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=JDZJKLMBIkY:TZB-vQpiGKc:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=JDZJKLMBIkY:TZB-vQpiGKc:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/JDZJKLMBIkY" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-wdX0HWD4NQ4/YD05oI2XzkI/AAAAAAAAQM0/oiZ-LcNjyhA1pcvEgZxg01cG-3taOnggACLcBGAsYHQ/s72-c/ADC_Comp_Mockup_1%2B%25281%2529.jpg" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/03/android-dev-challenge-2.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-8025191466704489030
   </id>
   <published>
    2021-03-02T08:22:00.002-08:00
   </published>
   <updated>
    2021-03-02T13:47:37.301-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="android developers" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Google Play" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <title type="text">Google Play Console powers better strategic decisions with new engagement metrics and unique benchmarks </title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-rWkGuip_YZE/YD5KIgm9lGI/AAAAAAAAQNk/O7k9AkpFLEUcccq09LGwN1-D1JL1DqWbQCLcBGAsYHQ/s0/google-play-engagement-metrics-launch.png"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-rWkGuip_YZE/YD5KIgm9lGI/AAAAAAAAQNk/O7k9AkpFLEUcccq09LGwN1-D1JL1DqWbQCLcBGAsYHQ/s0/google-play-engagement-metrics-launch.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Tom Grinsted, Product Manager, Google Play &lt;/em&gt;&lt;p&gt; &lt;p&gt; &lt;strong&gt;Today in Google Play Console, we’ve launched a &lt;a href="https://play.google.com/console/app/statistics?tab=COMPARE_TO_PEERS"&gt;suite of new metrics*&lt;/a&gt; and unique comparative benchmarks. Using these, you can evaluate your app or games’ engagement and monetization trends against up to 250 different peersets, helping you make better, more informed decisions about your product roadmaps and opportunities.&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; Whether you want to prioritize new features to drive engagement, experiment with pricing, or drive up retention, we hear from all developers that they need great data and insights to help make the best investments. &lt;/p&gt; &lt;p&gt; While some larger developers can compare data from across their portfolios, this isn’t always possible — for instance, when entering a new territory, if you don’t publish directly comparable apps, or if you only publish one or two games in the first place. In these types of cases, how do you know if your app or game’s performance is &lt;em&gt;good&lt;/em&gt; and where you can be better? &lt;/p&gt; &lt;p&gt; &lt;strong&gt;With this launch, we’re here to help all developers better contextualize and understand their performance. Here’s what’s new:&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;New engagement and monetization metrics&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; In partnership with experts in mobile apps and games growth, we’ve introduced a new set of engagement and monetization metrics based on best practices in evaluating app and game performance. These include: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;DAU/MAU&lt;/strong&gt;&lt;br&gt;The ratio of users who open your app each day vs. each month (28-day rolling period). This is a key measure of “stickiness.” It tells you if you’re driving regular, habitual use. &lt;li&gt;&lt;strong&gt;28-day returning users&lt;/strong&gt;&lt;br&gt;The percentage of your daily users who have also used your app in the previous 28 days. This can help you judge if you’re building a loyal audience. &lt;li&gt;&lt;strong&gt;DAU&lt;/strong&gt; and &lt;strong&gt;MAU&lt;/strong&gt; &lt;strong&gt;growth rates&lt;/strong&gt;&lt;br&gt;How quickly you’re growing the number of users who open your app daily and at least once in 28 days. These are your fundamental audience-growth measurements. &lt;li&gt;&lt;strong&gt;ARPDAU&lt;br&gt;&lt;/strong&gt;Average Revenue Per Daily Active User. This is your daily revenue divided by your DAU, which measures your success in driving revenue from your users. &lt;li&gt;&lt;strong&gt;Average purchase value&lt;br&gt;&lt;/strong&gt;How much you make on average from each transaction. This is useful for pricing optimization decisions. &lt;li&gt;&lt;strong&gt;Purchases per buyer &lt;/strong&gt;and &lt;strong&gt;User-buyer ratios&lt;br&gt;&lt;/strong&gt;The number of times buyers transact with you, and the percentage of your DAUs and MAUs who become buyers. Especially helpful if you’re looking to see if there’s growth opportunity in increasing how many people purchase or how often. &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; In total, we’re launching &lt;a href="https://support.google.com/googleplay/android-developer/answer/139628#install"&gt;15 new normalized metrics&lt;/a&gt; with benchmarks, and making the absolute numerators and denominators available to query, too. They can all be found in the new “Compare to peers” tab in the &lt;a href="https://play.google.com/console/app/statistics?tab=COMPARE_TO_PEERS"&gt;Statistics page*&lt;/a&gt;. For convenience, we’ve included other key normalized metrics, like store listing conversions, here too. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Track your performance with peerset comparison&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; To power your decision-making and help you discover areas of opportunity, all of these new normalized metrics are launching with peerset comparison performance as standard. You’ll be able to track your metrics over time and compare up to 250 different types of apps and games such as “Match-3 games,” “Audiobooks,” or “Comics.” &lt;/p&gt; &lt;a href="https://1.bp.blogspot.com/--xDtUROQ700/YD0a4G-PzSI/AAAAAAAAQME/9y3qyQqpwLM7xuJn0I8XeCi7HEdG7lyQgCLcBGAsYHQ/s0/Stats%2Bpage%2Bcropped.png" imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/--xDtUROQ700/YD0a4G-PzSI/AAAAAAAAQME/9y3qyQqpwLM7xuJn0I8XeCi7HEdG7lyQgCLcBGAsYHQ/s0/Stats%2Bpage%2Bcropped.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; Compare your performance to peers on the Statistics page in Google Play Console. &lt;/p&gt; &lt;p&gt; Country filters allow you to customise these insights to suit your business needs. For instance, you’ll be able to see if games similar to yours are driving more revenue from users in Japan, or if your team’s latest feature drop means that you’re outperforming other similar apps in terms of loyalty in India. &lt;/p&gt; &lt;p&gt; During our development process, we tested this suite of new insights with select partners. As well as useful in shaping our approach, their feedback has been positive: &lt;/p&gt; &lt;p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-LOLfTYfuatM/YD1dKuDVrNI/AAAAAAAAQNM/C8Sf6JDNoUgaoRW_LVqZeVfjyoVaVi7AACLcBGAsYHQ/s0/Screen%2BShot%2B2021-03-01%2Bat%2B4.30.11%2BPM.png" style="display: block; padding: -10em; text-align: center; "&gt;&lt;img style= "width:150px" id="floatRight" alt="Plarium logo" border="0" data-original-height="784" data-original-width="784" src="https://1.bp.blogspot.com/-LOLfTYfuatM/YD1dKuDVrNI/AAAAAAAAQNM/C8Sf6JDNoUgaoRW_LVqZeVfjyoVaVi7AACLcBGAsYHQ/s0/Screen%2BShot%2B2021-03-01%2Bat%2B4.30.11%2BPM.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;em&gt;"These new metrics and comparisons help drive our decision-making. Not just around what we should do with our games right now, but also strategic decisions about upcoming games. For us, it's already one of the most valuable features on the Play Console."&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Guy Ulmer, &lt;a href="https://play.google.com/store/apps/dev?id=5766366711041032164&amp;hl=en&amp;gl=US"&gt;Plarium Global Ltd.&lt;/a&gt; &lt;/strong&gt; &lt;/p&gt; &lt;p&gt; To help you make the most of these new metrics and insights, we’ve launched a new course on &lt;a href="http://g.co/playacademy/metrics"&gt;Play Academy&lt;/a&gt; to get you up to speed. You can also check out our &lt;a href="https://www.youtube.com/playlist?list=PLWz5rJ2EKKc9nK58h74i2L_jetju1Hmo8&amp;app=desktop"&gt;masterclass webinars&lt;/a&gt; about super-powering your growth. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Strong privacy protections for users and developers&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; The data powering these new metrics comes from users who have agreed to share their app activity with Google, and is modeled to better represent the whole population. The data simply records if an app is opened in the foreground. Users have control over their data and can opt out of sharing it, or delete individual events, in &lt;a href="http://myactivity.google.com"&gt;myactivity.google.com&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; Additionally, these new developer metrics are our first to use differential privacy - an advanced technique that provides increased privacy protections across datasets. You can find out more about this approach &lt;a href="https://developers.googleblog.com/2021/01/how-were-helping-developers-with-differential-privacy.html"&gt;in our technical blog&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; Just like previous benchmark launches, all of the peer comparison metrics come with protections for developer privacy. The data is generated from a large number of apps and games, and the peer groups, driven by Play Store’s advanced tagging system, do not share the performance of individual apps. So although you can find high-quality, reliable, useful peerset comparisons we've worked to obscure the performance of any individual competitor’s app from the peersets you see, and obscure your apps' performance in peersets too. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;More to come&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; This is the first launch of a multi-year project to bring more helpful insights and active recommendations to Google Play Console. The largest mobile app developers often use growth consultants to help inform their long-term strategic product decisions. We’re dedicated to bringing this kind of help and expertise to &lt;em&gt;all&lt;/em&gt; Play developers via the console. So look out for more launches over next year! &lt;/p&gt; &lt;br&gt; &lt;p&gt; &lt;small&gt; &lt;i&gt;*Please note you need a Google Play Console account to access these links.&lt;/i&gt; &lt;/small&gt; &lt;p&gt; &lt;br&gt; &lt;center&gt; &lt;p&gt; How useful did you find this blog post? &lt;/p&gt; &lt;p&gt; &lt;a href=" " style="color: gold;"&gt;★&lt;/a&gt; &lt;a href=" " style="color: gold;"&gt;★&lt;/a&gt; &lt;a href=" " style="color: gold;"&gt;★&lt;/a&gt; &lt;a href=" " style="color: gold;"&gt;★&lt;/a&gt; &lt;a href=" " style="color: gold;"&gt;★&lt;/a&gt; &lt;/p&gt; &lt;p&gt; &lt;a href="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" imageanchor="1" &gt;&lt;img id="imgHalf" style="width:40%;" border="0" src="https://4.bp.blogspot.com/-1LBva3U1LCI/W6kL2pl9ZYI/AAAAAAAAFys/grkBZRKkAWE1eLAh6DPffThJ7gP__SREACLcBGAs/s1600/play_logo_16_9%2B%25285%2529.png" data-original-width="499" data-original-height="281" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/center&gt; &lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=-_INzOIq1Cg:zBOEjpBQ-rk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=-_INzOIq1Cg:zBOEjpBQ-rk:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=-_INzOIq1Cg:zBOEjpBQ-rk:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/-_INzOIq1Cg" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-rWkGuip_YZE/YD5KIgm9lGI/AAAAAAAAQNk/O7k9AkpFLEUcccq09LGwN1-D1JL1DqWbQCLcBGAsYHQ/s72-c/google-play-engagement-metrics-launch.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/03/google-play-console-powers-better.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-7866577104484156251
   </id>
   <published>
    2021-03-01T10:13:00.002-08:00
   </published>
   <updated>
    2021-03-03T14:27:48.639-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Auto" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android for cars" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Jetpack" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <title type="text">Android Auto Apps Powered by Jetpack</title>
   <content type="html">
    &lt;meta name="twitter:image" content=" https://1.bp.blogspot.com/-0pJ9Ne9DIdQ/YDk5B36zbeI/AAAAAAAAQKs/UBQNCPnDTnEQDMfUIn-hug1uzG9eSCj5gCLcBGAsYHQ/s0/ChargemapAndroidAuto.gif "&gt; &lt;img style="display:none" src=" https://1.bp.blogspot.com/-0pJ9Ne9DIdQ/YDk5B36zbeI/AAAAAAAAQKs/UBQNCPnDTnEQDMfUIn-hug1uzG9eSCj5gCLcBGAsYHQ/s0/ChargemapAndroidAuto.gif"&gt; &lt;p&gt;&lt;em&gt;Posted by Eric Bahna, Product Manager &lt;/em&gt;&lt;p&gt; &lt;p&gt; In January, we &lt;a href="https://android-developers.googleblog.com/2021/01/expanding-reach-of-your-android-auto.html"&gt;enabled the Google Play Store to accept open testing submissions&lt;/a&gt; of navigation, parking, and charging apps. It’s great to see many of you developing Android Auto apps and sending us feedback through the issue tracker. Thank you for helping us improve the platform so we deliver better in-car experiences together! Drivers have been sending positive feedback, too, as new apps launch to open testing, like Chargemap. &lt;/p&gt; &lt;a href="https://1.bp.blogspot.com/-BCKiAfzbK9o/YEANNxZD4SI/AAAAAAAAQN0/L0RKBw6d3YktsYk31khM0JOEEDeM8oLGwCLcBGAsYHQ/s0/Android%2BAuto%2BChargemap.gif" imageanchor="1" &gt;&lt;img style="width:100%" id=imgFull border="0" src="https://1.bp.blogspot.com/-BCKiAfzbK9o/YEANNxZD4SI/AAAAAAAAQN0/L0RKBw6d3YktsYk31khM0JOEEDeM8oLGwCLcBGAsYHQ/s0/Android%2BAuto%2BChargemap.gif" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; &lt;em&gt; Chargemap in Android Auto &lt;/em&gt; &lt;/p&gt; &lt;p&gt; Today, we’ve reached the next milestone: &lt;strong&gt;the Android for Cars App Library is available in Jetpack as &lt;code&gt;&lt;a href="https://developer.android.com/jetpack/androidx/releases/car-app#1.0.0-beta01"&gt;androidx.car.app&lt;/a&gt; 1.0.0-beta01&lt;/code&gt;!&lt;/strong&gt; The move to Jetpack makes the library open source, gives you more visibility into our feature development, and provides API consistency with other Jetpack libraries. We’ve updated the &lt;a href="https://developer.android.com/training/cars/navigation"&gt;developer guide&lt;/a&gt; and &lt;a href="https://developers.android.com/training/cars/Android%20for%20Cars%20Jetpack%20Library%20design%20guidelines.pdf"&gt;design guidelines&lt;/a&gt; to cover &lt;code&gt;androidx.car.app&lt;/code&gt;. Test your app with Android Auto 6.1, or later, then you can publish your app to open testing in the Google Play Store. &lt;code&gt;androidx.car.app&lt;/code&gt; includes all functionality of the closed source library (&lt;code&gt;com.google.android.libraries.car&lt;/code&gt;), and then some! For example, we added a new &lt;a href="https://developer.android.com/reference/androidx/car/app/model/GridTemplate"&gt;GridTemplate&lt;/a&gt;, which is useful when users rely primarily on images to make their selections. &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-MLpA7kPaK4I/YDk5t4cv-PI/AAAAAAAAQK0/m_pIhXTAbgQWSwYODMpM0qdm8fYPU1nGgCLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-26%2Bat%2B1.06.08%2BPM.png" imageanchor="1" &gt;&lt;img style="width:100%" id=imgFull border="0" src="https://1.bp.blogspot.com/-MLpA7kPaK4I/YDk5t4cv-PI/AAAAAAAAQK0/m_pIhXTAbgQWSwYODMpM0qdm8fYPU1nGgCLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-26%2Bat%2B1.06.08%2BPM.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;/center&gt; &lt;p id="imgCaption"&gt; &lt;em&gt;Examples of the new GridTemplate in &lt;code&gt;androidx.car.app&lt;/code&gt;&lt;/em&gt; &lt;/p&gt; &lt;p&gt; On September 1, 2021, the closed source Android for Cars App Library (&lt;code&gt;com.google.android.libraries.car.app&lt;/code&gt;) will no longer be available and the Google Play Store will not accept submissions that use &lt;code&gt;com.google.android.libraries.car.app&lt;/code&gt;. Our development focus from now, including new features, is on &lt;code&gt;androidx.car.app&lt;/code&gt;. We encourage you to migrate now and we’ve created a &lt;a href="https://developers.android.com/training/cars/jetpack-migration"&gt;migration guide&lt;/a&gt; that makes it easy. Migration usually takes less than a day, in our experience with early access partners. &lt;/p&gt; &lt;p&gt; We’re working hard to stabilize &lt;code&gt;androidx.car.app&lt;/code&gt; and prepare the Google Play Store for production submissions. Production submissions will require &lt;code&gt;androidx.car.app&lt;/code&gt; and you can get your app ready by using it in open testing today. &lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=fWRU5Dbe5TY:TX54-yrhkgo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=fWRU5Dbe5TY:TX54-yrhkgo:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=fWRU5Dbe5TY:TX54-yrhkgo:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/fWRU5Dbe5TY" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-BCKiAfzbK9o/YEANNxZD4SI/AAAAAAAAQN0/L0RKBw6d3YktsYk31khM0JOEEDeM8oLGwCLcBGAsYHQ/s72-c/Android%2BAuto%2BChargemap.gif" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/03/android-auto-apps-powered-by-jetpack.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-8793125389833263497
   </id>
   <published>
    2021-02-27T10:00:00.001-08:00
   </published>
   <updated>
    2021-02-27T10:00:07.795-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="#AndroidDevJourney" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Dev Journey" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Developer Journey" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Developer Story" />
   <category scheme="http://www.blogger.com/atom/ns#" term="career inspiration" />
   <category scheme="http://www.blogger.com/atom/ns#" term="careers in tech" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Dev Story" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Developer Inspiration" />
   <category scheme="http://www.blogger.com/atom/ns#" term="developer stories" />
   <title type="text">#AndroidDevJourney spotlight - February edition</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-c9UbRJdy1sA/YDlV8SokXuI/AAAAAAAAQLw/95BqMu6wMegTT83q1pdVId4NFoHQbM-lACLcBGAsYHQ/s0/ADJ_twitter_wrap_Feb.jpg"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-c9UbRJdy1sA/YDlV8SokXuI/AAAAAAAAQLw/95BqMu6wMegTT83q1pdVId4NFoHQbM-lACLcBGAsYHQ/s0/ADJ_twitter_wrap_Feb.jpg"&gt; &lt;p&gt;&lt;em&gt;&lt;a href="https://twitter.com/LuliPerkins"&gt;Luli Perkins&lt;/a&gt;, Developer Relations Program Manager&lt;/em&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-q-qKHM6GpZg/YDlQ0-FBECI/AAAAAAAAQK8/cd6dYiywVtw19lxgx1xhtQzTrqy2yKPPwCLcBGAsYHQ/s0/ADJ_WrapUp_Blog_Feb.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Android Dev Journey February Header" border="0" data-original-height="969" data-original-width="3244" src="https://1.bp.blogspot.com/-q-qKHM6GpZg/YDlQ0-FBECI/AAAAAAAAQK8/cd6dYiywVtw19lxgx1xhtQzTrqy2yKPPwCLcBGAsYHQ/s0/ADJ_WrapUp_Blog_Feb.jpg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;Our second edition of #AndroidDevJourney is here! At the beginning of this year we launched the #AndroidDevJourney to share the stories of members of our community through our social platforms. Each Saturday, from January through June, we’ll feature a new developer on &lt;a href="https://twitter.com/AndroidDev"&gt;our Twitter account&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;For a chance to be featured in our March spotlight series, tweet us your story using #AndroidDevJourney.&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/--Y7BH2rXpuQ/YDlR1Erk5DI/AAAAAAAAQLE/TRDYaRVnB24RbvJnobo9Ci_YjU9wf2nRwCLcBGAsYHQ/s0/ADJ_twitter_Kelly.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Andrew Kelly" border="0" data-original-height="675" data-original-width="1200" src="https://1.bp.blogspot.com/--Y7BH2rXpuQ/YDlR1Erk5DI/AAAAAAAAQLE/TRDYaRVnB24RbvJnobo9Ci_YjU9wf2nRwCLcBGAsYHQ/s0/ADJ_twitter_Kelly.jpg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h2&gt;Andrew Kelly&lt;/h2&gt; &lt;p&gt; &lt;strong&gt;Tell me about your journey to becoming an Android Developer and how you got started.&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;In 2012 I was working as a contractor for the NSW government here in Australia as a Java J2EE web developer. I'd been in that role for 11 years, building web apps for students and teachers. However, in 2012 the government decided that contractors were expensive and let us all go. So while in my hand-over period I'd read about some kids who were writing Android apps and making lots of money doing so. The Android Market was new and so any app uploaded got a large audience, and since I already knew Java it seemed like switching from a web developer to a mobile developer might be a smart career move. So I purchased a new phone, the HTC Legend and spent the next 2 weeks learning everything I could about Android apps. It was the first time I could run software I'd written on a device made by someone else that I could carry around with me. It was a very exciting time where any app idea seemed possible.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt; When my contract finally ended, I managed to get a new job working for a mobile development agency and started working on Android apps for their clients. In order to learn more about Android app development, I started to attend the local Android meetups and Google Developer Group events, listening to speakers (mostly from Google) and trying to improve my skills as an Android developer.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt; In 2013 I was offered the opportunity to become the organiser of the Sydney GDG and it was that year that I also attended my first Google I/O (I've been every year since). One of the hard parts about being a GDG organiser is finding speakers, so occasionally if there were no speakers, or if a speaker dropped out at the last minute, I would step in and give a talk instead. 2013 was also the year I decided to move on from the mobile agency I was working at, and I spent the next 5 years working as a freelance contractor, working with clients such as eBay, the Sydney Opera House, and one of the large banks in Australia. Being the organiser of GDG Sydney and a regular speaker at the meetups meant finding work was quite easy.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt; In 2016 because of all the speaking I was doing I was approached to join the Google Developer Experts program, at this time I was doing regular talks at both the GDG Sydney and Android meetup events every couple of months. When I joined the GDE program, I handed over my GDG responsibilities to some friends, who still run it to this day. As part of the GDE program I've been lucky enough to attend many Google I/O events, and I've also had the opportunity to speak at conferences all over the world, including DroidCon Boston, Mobile Era in Oslo, DevFest Melbourne, DroidCon Singapore, Chicago Roboto and many others. Having the chance to speak to so many people all over the world has been very rewarding, and I've made many friends.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt; In 2019 I joined the company where I work today - mx51, I'm the lead Android developer designing and building apps that run on payment terminals, which also integrate with Point of Sales systems. I'm still a GDE but with the 2020 madness the ability to speak at in-person events was severely hindered. I hope that in-person events will start again soon and that I can continue my journey as a GDE.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;What’s one shortcut, tip, or hack you can’t live without?&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;Android development is constantly changing and advancing, so there is always something new to learn. My tip would be to always be learning, there are lots of ways to do this, subscribe to the &lt;a href="https://www.youtube.com/channel/UCVHFbqXqoYvEWM1Ddxl0QDg"&gt;Android Developers YouTube channels&lt;/a&gt; and &lt;a href="https://medium.com/androiddevelopers"&gt;Medium publications&lt;/a&gt;. Follow Googlers and &lt;a href="https://twitter.com/googledevexpert"&gt;Google Developer Experts&lt;/a&gt; on Twitter for new tips and posts. Subscribe to the &lt;a href="https://developer.android.com/subscribe"&gt;Android Weekly newsletter&lt;/a&gt; for an overview of new libraries and blog posts, and attend your local &lt;a href="https://developers.google.com/community/gdg"&gt;GDG chapter and Meetups&lt;/a&gt;. Not only are these great ways to learn new aspects of Android development, but with meetups they're a great place to meet other Android developers, share successes, and ask for advice on problems.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;What's the one piece of advice you wish someone would have given you when you started on your journey?&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;When I started out as an Android developer, I could never have dreamed about being a Google Developer Expert, travelling the world and speaking at large events. It took me a long time to learn that it's ok not to know the answers to people's questions. If at an event someone asks something you don't know, it's ok to say so. You can always say that you'll find out later and get back to them. There is no need to make up a wrong answer on the spot and lead someone off course. People are often scared that a topic they're presenting might not be the best or greatest way to do something, and they fear looking stupid. If a person in the audience suggests a better way that shouldn't be a worry, 1) you learnt something, 2) everyone else learnt something and 3) there may be scenarios where your solution is better and a discussion can be had. So my advice would be, when speaking don't fear questions but embrace the opportunity to help someone immediately, or later, or perhaps discover something new yourself.&lt;/em&gt; &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-mO2K76oUO_k/YDlS3oLBHFI/AAAAAAAAQLM/oNLQdR61aYEdu_D3ewtafLAKmc0v5Zw3QCLcBGAsYHQ/s0/ADJ_twitter_Dominguez.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Amanda Hinchman-Dominguez" border="0" data-original-height="675" data-original-width="1200" src="https://1.bp.blogspot.com/-mO2K76oUO_k/YDlS3oLBHFI/AAAAAAAAQLM/oNLQdR61aYEdu_D3ewtafLAKmc0v5Zw3QCLcBGAsYHQ/s0/ADJ_twitter_Dominguez.jpg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h2&gt;Amanda Hinchman-Dominguez&lt;/h2&gt; &lt;p&gt; &lt;strong&gt;Tell me about your journey to becoming an Android Developer and how you got started.&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;I dabbled in Android development in college with the student mobile development group, but it wasn't until I was a few years in web development I made the real switch over. Back in my web dev days, I joined the Kotlin community, where I felt immediately welcome. Shortly after, I moved to Chicago a few years back when I heard there was a Kotlin community in the tech scene. &lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;Getting up to speed with Android at a professional level is a whole different game, and I've been lucky to find the overlapping Kotlin/Android community both locally and globally. Android development has accelerated my career technically and professionally, yet the world is so deep and vast within the sandbox of Android development. &lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;Already being an active enthusiast with Kotlin, it only felt natural to switch to Android, and I've never looked back. Since then, I've been working scalable and complex Android applications, and contributing with some technical writing along the way. I'm currently co-writing with my colleague, Pierre Laurence, on “Programming Android with Kotlin: Achieving Structured Concurrency with Coroutines with O'Reilly”, and I'm excited to have it come out sometime this year.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;What’s one shortcut, tip, or hack you can’t live without?&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;For larger projects, it's sometimes hard to locate the file you're looking at in your Project view. You can use the target symbol ⊕ to get a highlight the file you're currently on in Android Studio. &lt;/em&gt; &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-gaPrtvlOMWQ/YDlUAuObVMI/AAAAAAAAQLU/SydZMDMHcswviHtNUms9oLKdnTF91DFkgCLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-03%2Bat%2B12.44.20%2BPM.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Android Studio interface with arrows pointing to target symbol" border="0" data-original-height="859" data-original-width="1600" src="https://1.bp.blogspot.com/-gaPrtvlOMWQ/YDlUAuObVMI/AAAAAAAAQLU/SydZMDMHcswviHtNUms9oLKdnTF91DFkgCLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-03%2Bat%2B12.44.20%2BPM.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt; &lt;strong&gt;What's the one piece of advice you wish someone would have given you when you started on your journey?&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;Only install LeakCanary when, and only when, you &lt;strong&gt;and&lt;/strong&gt; your team is ready for that conversation 😁&lt;/em&gt; &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-GsVaOMDCKrM/YDlUZUEljBI/AAAAAAAAQLc/OnDbJMGwSfM2GGLjsuIVu2S5F5oUy8nBgCLcBGAsYHQ/s0/ADJ_twitter_Edwards.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Anthony Edwards JR" border="0" data-original-height="675" data-original-width="1200" src="https://1.bp.blogspot.com/-GsVaOMDCKrM/YDlUZUEljBI/AAAAAAAAQLc/OnDbJMGwSfM2GGLjsuIVu2S5F5oUy8nBgCLcBGAsYHQ/s0/ADJ_twitter_Edwards.jpg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h2&gt;Anthony Edwards Jr&lt;/h2&gt; &lt;p&gt; &lt;strong&gt;Tell me about your journey to becoming an Android Developer and how you got started.&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;My journey as a developer started as a child. As a kid, I was obsessed with robots. I remember my dad bought me a Lego set called Lego Mindstorm, which was basically a robotics set with sensors and motors, plus it was also programmable. After graduating high school, I enrolled in the US Army as an Aviation Maintenance Repairer. After 6 years, I was honorably discharged then enrolled in college at Fordham University. In 2014, I received a Bachelor of Science in Computer Science. About 2 years later, I met my now wife, and together we started building EatOkra as a way for us to find black-owned restaurants in Brooklyn, NY. As we introduced the application to new people, they shared it with their network; before we knew it, many people were asking us to cover more areas in the south. &lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;What’s one shortcut, tip, or hack you can’t live without?&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;Learn how to ask the right questions.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;What's the one piece of advice you wish someone would have given you when you started on your journey?&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;One piece of advice I wish I took more seriously was to not build an application using beta technology. EatOkra's MVP was created using a beta version of a software framework. It started out good but then as they made updates, at times, I ended up having to wait months for certain issues to get fixed. I also had to completely stop and restart the app with an entirely new code base because the company decided to change how they architected the code. I learned a lot but it was painful to navigate.&lt;/em&gt; &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-td813uopMIE/YDlUqo_4hgI/AAAAAAAAQLk/-iKYaBmZBxMdBfKx9MyVaU74eitVRhChwCLcBGAsYHQ/s0/ADJ_twitter_-Tovar.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Dinorah Tovar" border="0" data-original-height="675" data-original-width="1200" src="https://1.bp.blogspot.com/-td813uopMIE/YDlUqo_4hgI/AAAAAAAAQLk/-iKYaBmZBxMdBfKx9MyVaU74eitVRhChwCLcBGAsYHQ/s0/ADJ_twitter_-Tovar.jpg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h2&gt;Dinorah Tovar&lt;/h2&gt; &lt;p&gt; &lt;strong&gt;Tell me about your journey to becoming an Android Developer and how you got started.&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;My journey started a couple of years ago (I was still in college) when I saw the Android Developer Udacity course. There was no nano degree back in the day. So once I saw it, I started building some apps for myself. From there, I applied for my first job as a junior developer in a big consulting firm. Then I started seeing more courses and started following a lot of people at Twitter, like Sam Edwards and Joe Birch (both GDE). The community made me grow and learn. A couple of years later I got my first team and I began delivering speeches at conferences and keeping up my Medium blog on the side. The community offers me feedback and knowledge, and especially a place to learn. My first conference was with WomenWhoCode.org here in Mexico. They opened a place for me without any experience. The same happened with Google Developers Groups here in Mexico City. &lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;I became a Lead Engineer during my second job and I began doing worldwide conferences. I asked for feedback from Sam Edwards and Carlos Muñoz (also GDEs in Colombia) and they told me not to worry because I would amazingly and they encouraged me to keep doing it. &lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;I got a really nice offer to start from scratch here as a Mobile Platform engineer in Mexico City with a huge fintech Startup (Konfio.mx). This is my current job, which means I am in the architectural office where we choose new ideas and new processes and pretty much service all the areas in the company.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;I started creating a group of series to teach people some specific topics that I noticed were not deeply addressed. I also started getting involved in Kotlin Multiplatform and then I was reached out to by two GDE that nominated me to become GDE, Walmyr Carvalho, and Sam Edwards. They offered me feedback about my latest talks, podcast, and series and I was accepted at the end of 2020. Right now, I'm trying to learn more and deliver more talks and blog posts to the community.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;What’s one shortcut, tip, or hack you can’t live without?&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;My special hack as an Android Developer is to use Wireless Debugging in the lastest Android Studio for physical devices. It is my favorite part because I don't need to use any cables and the setup is super easy!&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;What's the one piece of advice you wish someone would have given you when you started on your journey?&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;My advice is that learning is a process, things change and all of this must be welcome because we are addressing the evolution of the platform as we code. Also, read everything you can because people in the community are amazing and they love to teach! Open an account on Twitter, because there are a lot of people giving tips in less than 180 characters. &lt;/em&gt; &lt;/p&gt; &lt;hr&gt; &lt;p&gt;The Android Developer community prides itself in its inclusivity and welcomes developers from all backgrounds and stages of life. If you’re feeling inspired and want to learn more about how to become a part of our community, here are a few resources to help get you started. &lt;/p&gt; &lt;center&gt;&lt;p&gt; &lt;em&gt;Dive into &lt;a href="https://developer.android.com/"&gt;developer.android.com&lt;/a&gt;&lt;/em&gt; &lt;/p&gt;&lt;/center&gt; &lt;center&gt;&lt;p&gt; &lt;em&gt;Follow us on &lt;a href="https://twitter.com/AndroidDev"&gt;Twitter&lt;/a&gt;&lt;/em&gt; &lt;/p&gt;&lt;/center&gt; &lt;center&gt;&lt;p&gt; &lt;em&gt;Subscribe to our &lt;a href="https://goo.gle/subscribe-androiddev-yt"&gt;YouTube channel&lt;/a&gt;&lt;/em&gt; &lt;/p&gt;&lt;/center&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-YvLu6Iqq3qY/YBR2PWa7aAI/AAAAAAAAQCQ/dViPshDrn2M6ekELBHImIGvn5D9zRsECwCLcBGAsYHQ/s0/image%2B7.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:25%" alt="GDG logo" border="0" data-original-height="810" data-original-width="1440" src="https://1.bp.blogspot.com/-YvLu6Iqq3qY/YBR2PWa7aAI/AAAAAAAAQCQ/dViPshDrn2M6ekELBHImIGvn5D9zRsECwCLcBGAsYHQ/s0/image%2B7.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt; &lt;p&gt; The Google Developer Groups program gives developers the opportunity to meet local developers with similar interests in technology. A GDG meetup event includes talks on a wide range of technical topics where you can learn new skills through hands-on workshops. &lt;/p&gt; &lt;center&gt;&lt;p&gt; Join a chapter near you &lt;a href="https://developers.google.com/community/gdg/groups"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;/center&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-ZmmknLJ_ZBE/YBR248DwllI/AAAAAAAAQCY/suDSAy5x7pYGceUq6-Hn0vA9eyqcMW_FACLcBGAsYHQ/s0/image%2B8.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:25%" alt="Women Techmakers logo" border="0" data-original-height="122" data-original-width="640" src="https://1.bp.blogspot.com/-ZmmknLJ_ZBE/YBR248DwllI/AAAAAAAAQCY/suDSAy5x7pYGceUq6-Hn0vA9eyqcMW_FACLcBGAsYHQ/s0/image%2B8.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt; &lt;p&gt; Founded in 2014, Google’s Women Techmakers is dedicated to helping all women thrive in tech through community, visibility and resources. With a member base of over 100,000 women developers, we’re working with communities across the globe to build a world where all women can thrive in tech. &lt;/p&gt; &lt;center&gt;&lt;p&gt; Become a member &lt;a href="https://services.google.com/fb/forms/joinwomentechmakers/"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;/center&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-qEAbLj4VjWM/YBR3qJ5XlSI/AAAAAAAAQCk/GXJDi7q9vZQFlUj79CZW6l0gRc4KzIBsACLcBGAsYHQ/s0/image%2B9.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:25%" alt="GD Experts logo" border="0" data-original-height="333" data-original-width="1600" src="https://1.bp.blogspot.com/-qEAbLj4VjWM/YBR3qJ5XlSI/AAAAAAAAQCk/GXJDi7q9vZQFlUj79CZW6l0gRc4KzIBsACLcBGAsYHQ/s0/image%2B9.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt; &lt;p&gt; The Google Developers Experts program is a global network of highly experienced technology experts, influencers and thought leaders who actively support developers, companies and tech communities by speaking at events, publishing content, and building innovative apps. Experts actively contribute to and support the developer and startup ecosystems around the world, helping them build and launch highly innovative apps. &lt;/p&gt; &lt;center&gt;&lt;p&gt; Learn more about the program &lt;a href="https://developers.google.com/community/experts"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;/center&gt; &lt;p&gt;Java is a registered trademark of Oracle and/or its affiliates.&lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=GxJrfCweFRw:nYubPnoBdgE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=GxJrfCweFRw:nYubPnoBdgE:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=GxJrfCweFRw:nYubPnoBdgE:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/GxJrfCweFRw" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-c9UbRJdy1sA/YDlV8SokXuI/AAAAAAAAQLw/95BqMu6wMegTT83q1pdVId4NFoHQbM-lACLcBGAsYHQ/s72-c/ADJ_twitter_wrap_Feb.jpg" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/02/androiddevjourney-spotlight-february.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-6515804336353444561
   </id>
   <published>
    2021-02-25T10:01:00.001-08:00
   </published>
   <updated>
    2021-02-25T10:01:37.317-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="activity-recognition" />
   <category scheme="http://www.blogger.com/atom/ns#" term="API" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Develop" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="health" />
   <category scheme="http://www.blogger.com/atom/ns#" term="wellness" />
   <title type="text">Low-Power Sleep Tracking on Android</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-IS-fCBd29EM/YDfU6jz7UtI/AAAAAAAAQKg/Zv-ufO0TKwQYo9dIxwP2NgGFy4oxkWl8gCLcBGAsYHQ/s0/Android-LowPowerSleepTracking-Social-v2%2B%25281%2529.png"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-IS-fCBd29EM/YDfU6jz7UtI/AAAAAAAAQKg/Zv-ufO0TKwQYo9dIxwP2NgGFy4oxkWl8gCLcBGAsYHQ/s0/Android-LowPowerSleepTracking-Social-v2%2B%25281%2529.png"&gt; &lt;p&gt;&lt;em&gt;Posted by Nick Grayson, Product Manager&lt;/em&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-zd0Y7AshEqI/YDUoxN3HWoI/AAAAAAAAQII/X6JfLtKrV2ofX6hXoMJszZCGYk-VCr-MACLcBGAsYHQ/s0/Android-LowPowerSleepTracking-Header-v2.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Illustration of phone with moon and Android logo on screen" border="0" data-original-height="968" data-original-width="3250" src="https://1.bp.blogspot.com/-zd0Y7AshEqI/YDUoxN3HWoI/AAAAAAAAQII/X6JfLtKrV2ofX6hXoMJszZCGYk-VCr-MACLcBGAsYHQ/s0/Android-LowPowerSleepTracking-Header-v2.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt; Android works best when it helps developers create apps that people love. That’s why we are dedicated to providing useful APIs like &lt;a href="https://developers.google.com/location-context/activity-recognition"&gt;Activity Recognition&lt;/a&gt; which, with the user’s permission, can detect user’s activities (such as whether a user is biking or walking) to help apps provide contextually aware experiences. &lt;/p&gt; &lt;p&gt; So much of what we do relies on a good night's rest. Our phones have become great tools for making more informed decisions about our sleep. And by being informed about sleep habits, people can make better decisions throughout the day about sleep, which affects things like concentration and mental health. &lt;/p&gt; &lt;p&gt; In an effort to help our users stay informed about their sleep, we are making our Sleep API publicly available. &lt;/p&gt; &lt;h2&gt;What is the Sleep API?&lt;/h2&gt; &lt;p&gt; The Sleep API is an Android Activity Recognition API that surfaces information about the user’s sleep. It can be used to power features like the &lt;a href="https://blog.google/outreach-initiatives/digital-wellbeing/improve-your-sleep/"&gt;Bedtime mode in Clock&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; This sleeping information is reported in two ways: &lt;/p&gt; &lt;ol&gt; &lt;li&gt;A ‘sleep confidence’, which is reported at a regular interval (up to 10 minutes) &lt;li&gt;A daily sleep segment which is reported after a wakeup is detected &lt;/li&gt; &lt;/ol&gt; &lt;p&gt; The API uses an on-device artificial intelligence model that uses the device’s light and motion sensors as inputs. &lt;/p&gt; &lt;p&gt; As with all of our Activity Recognition APIs, the app must be granted the Physical Activity Recognition runtime permission from the user to detect sleep. &lt;/p&gt; &lt;h2&gt;Why is this important for developers?&lt;/h2&gt; &lt;p&gt; Developers spend valuable engineering time to combine sensor signals to determine when the user has started or ended activities like sleep. These detection algorithms are inconsistent between apps and when multiple apps independently and continuously check for changes in user activity, battery life suffers. &lt;/p&gt; &lt;p&gt; The Sleep API is a simple API that centralizes sleep detection processing in a battery-efficient manner. For this launch, we are proud to collaborate with Urbandroid, the developer of the popular alarm app, &lt;a href="https://play.google.com/store/apps/details?id=com.urbandroid.sleep&amp;hl=en_US&amp;gl=US"&gt;Sleep As Android&lt;/a&gt; &lt;/p&gt; &lt;div&gt; &lt;a href="https://1.bp.blogspot.com/-4uX0okdxdFk/YDUpibS2ZbI/AAAAAAAAQIQ/u_EpNo3KYvso4iu9cQhXfXQHQ9u63VETQCLcBGAsYHQ/s0/ic_launcher.1024.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img id="floatLeft" style="width:30%; padding:0 1em 1em 0;" alt="Android logo sleeping" border="0" data-original-height="225" data-original-width="225" src="https://1.bp.blogspot.com/-4uX0okdxdFk/YDUpibS2ZbI/AAAAAAAAQIQ/u_EpNo3KYvso4iu9cQhXfXQHQ9u63VETQCLcBGAsYHQ/s0/ic_launcher.1024.png"/&gt;&lt;/a&gt; &lt;blockquote&gt;&lt;em&gt;Sleep as Android is a swiss army knife for getting a better night’s rest. It tracks sleep duration, regularity, phases, snoring, and more. Sleep Duration is one of the most important parameters to watch for ensuring a good night’s rest. The new Sleep API gives us a fantastic opportunity to track it automatically in the most battery efficient way imaginable.&lt;/em&gt; &lt;p&gt;- Sleep as Android Team&lt;/p&gt; &lt;/blockquote&gt; &lt;/div&gt; &lt;br&gt;&lt;br&gt; &lt;h2&gt;When can I start using this API?&lt;/h2&gt; &lt;p&gt; The Sleep API is available for developers to use now as part of the &lt;a href="https://developers.google.com/android/guides/releases#febuary_18_2021"&gt;latest version of Google Play Services&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; This API is one step of our efforts to help our users get a better night's rest. We look forward to working more on this API and in this area in the future. &lt;/p&gt; &lt;p&gt; If you are interested in exploring or using this API, check out our &lt;a href="https://developers.google.com/location-context/sleep"&gt;API Documentation&lt;/a&gt;. &lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=aHtgBL8Qo7U:O26L6lFKzMQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=aHtgBL8Qo7U:O26L6lFKzMQ:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=aHtgBL8Qo7U:O26L6lFKzMQ:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/aHtgBL8Qo7U" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-IS-fCBd29EM/YDfU6jz7UtI/AAAAAAAAQKg/Zv-ufO0TKwQYo9dIxwP2NgGFy4oxkWl8gCLcBGAsYHQ/s72-c/Android-LowPowerSleepTracking-Social-v2%2B%25281%2529.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/02/low-power-sleep-tracking-on-android.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-3074457654932009718
   </id>
   <published>
    2021-02-25T06:42:00.002-08:00
   </published>
   <updated>
    2021-03-05T14:02:46.885-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="Android app development" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Developer" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Devs" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Studio" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Study Jams" />
   <category scheme="http://www.blogger.com/atom/ns#" term="build Android apps" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Developer Student Clubs" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Google Developers" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <title type="text">Students Learn Android App Development with Google Developer Student Clubs</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-y_15uDfl9aQ/YEKqX8YieuI/AAAAAAAAQOI/_HDatKD-AaMqOJliShI7ALhvr0lyHiJIgCLcBGAsYHQ/s0/Screen%2BShot%2B2021-03-05%2Bat%2B5.01.09%2BPM.png"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-y_15uDfl9aQ/YEKqX8YieuI/AAAAAAAAQOI/_HDatKD-AaMqOJliShI7ALhvr0lyHiJIgCLcBGAsYHQ/s0/Screen%2BShot%2B2021-03-05%2Bat%2B5.01.09%2BPM.png"&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/ericakhanson?lang=en"&gt;Erica Hanson&lt;/a&gt;, Global Program Manager, Google Developer Student Clubs &lt;/em&gt;&lt;p&gt; &lt;p&gt; &lt;a href="https://dsc.community.dev/"&gt;Google Developer Student Clubs&lt;/a&gt;, a program of university based community groups for students interested in Google developer technologies, recently started hosting study groups called &lt;a href="https://android-developers.googleblog.com/2021/02/new-curriculum-for-educators-to-teach-android-app-development.html?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+blogspot%2FhsDu+%28Android+Developers+Blog%29"&gt;Android Study Jams&lt;/a&gt;. The goal? Learn Android app development through hands-on codelabs in an online curriculum provided by Google. There are two tracks: one for students who are new to programming, and one for those who already have experience. Interested in participating? &lt;a href="https://developer.android.com/teach#for-facilitators-leading-a-community-group"&gt;Facilitator materials are available&lt;/a&gt; for anyone to host Android Study Jams in their community - take a look and get to building. &lt;/p&gt; &lt;p&gt; Google Developer Student Clubs are dedicated to helping students learn programming together, among peers, in a fun and interactive setting. While over 50 thousand students from all over the world have participated in these Android workshops, we wanted to highlight the exciting work from groups in Indonesia, Turkey, and Nigeria. From programming in &lt;a href="https://developer.android.com/kotlin"&gt;Kotlin&lt;/a&gt; to building a series of apps, these students have put their minds to work. &lt;/p&gt; &lt;p&gt; Learn more about what these three clubs have been up to below. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Indonesia&lt;/strong&gt; &lt;/p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-L7_l8QGGaf4/YDex8zHfyHI/AAAAAAAAQJo/q022kr26MU8lx9ZEUzy63J9KyRdvkO7FACLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-23%2Bat%2B10.53.23%2BAM.png" imageanchor="1" &gt;&lt;img style="width:100%" id=imgFull border="0" src="https://1.bp.blogspot.com/-L7_l8QGGaf4/YDex8zHfyHI/AAAAAAAAQJo/q022kr26MU8lx9ZEUzy63J9KyRdvkO7FACLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-23%2Bat%2B10.53.23%2BAM.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;/center&gt; &lt;p id="imgCaption"&gt;(Image from UNPNVJ’s Android Study Jams where students are learning Kotlin)&lt;/p&gt; &lt;p&gt; Club members from Universitas Pembangunan Nasional Veteran Jakarta in Indonesia recently came together to host a &lt;a href="https://www.youtube.com/watch?v=T0KIY3d2Jio"&gt;virtual Android Study Jams session &lt;/a&gt;with over 60 students to learn the basics of building Android apps. Their student-run learning session covered several topics, including: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;An introduction to developing for Android &lt;li&gt;An introduction to coding in the Kotlin programming language &lt;li&gt;A tutorial on setting up and working in Android Studio &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; After the students felt comfortable with the basics of Kotlin and &lt;a href="https://developer.android.com/studio/features"&gt;Android Studio&lt;/a&gt;, they combined their new skills to create their own layouts for a birthday card app. &lt;/p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-Qxi3uCZ3pTI/YDeyc0bueYI/AAAAAAAAQJw/GZn1dCOQU0c_LN9jvt_hUDdKTWDNNspFwCLcBGAsYHQ/s0/BirthdayCardApp_framed%2B%25281%2529.png" imageanchor="1" &gt;&lt;img style="width:200px" id=imgFull border="0" src="https://1.bp.blogspot.com/-Qxi3uCZ3pTI/YDeyc0bueYI/AAAAAAAAQJw/GZn1dCOQU0c_LN9jvt_hUDdKTWDNNspFwCLcBGAsYHQ/s0/BirthdayCardApp_framed%2B%25281%2529.png " data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;/center&gt; &lt;p id="imgCaption"&gt;(Image of Birthday cake app) &lt;/p&gt; &lt;p&gt; We can’t wait to see what the students from UPNVJ build next on Android thanks to their new programming skills. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Turkey&lt;/strong&gt; &lt;/p&gt; &lt;a href="https://1.bp.blogspot.com/-6H69-8sG6bY/YDey11WtiuI/AAAAAAAAQJ4/eepuvQiVU3gEr95YiLIQngrQDLkDJfwQACLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-16%2Bat%2B11.12.16%2BAM.png" imageanchor="1" &gt;&lt;img id=imgFull border="0" src="https://1.bp.blogspot.com/-6H69-8sG6bY/YDey11WtiuI/AAAAAAAAQJ4/eepuvQiVU3gEr95YiLIQngrQDLkDJfwQACLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-16%2Bat%2B11.12.16%2BAM.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt;(Image from Medipol University where Nelson Glauber is teaching students the basics of Android App Development)&lt;/p&gt; &lt;p&gt; Medipol University in Turkey also hosted their own Android Study Jams by organizing a &lt;a href="https://www.youtube.com/watch?v=_OTLu0LgEp4"&gt;livestream &lt;/a&gt;with over 500 participants. Nelson Glauber, who was the first &lt;a href="https://developers.google.com/community/experts"&gt;Google Developer Expert&lt;/a&gt; for Android in Latin America, led the event and helped students learn more about topics like: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;How to display text and images in an app &lt;li&gt;Adding a button to an app and making it interactive &lt;li&gt;Learning more programming concepts in Kotlin like classes, objects, and conditionals &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; After taking students’ questions, Nelson worked with them to build an interactive dice roller app that updates the screen after the results of a roll. &lt;/p&gt; &lt;center&gt;&lt;a href="https://1.bp.blogspot.com/-aR9uVV5wqNI/YDezM7onBCI/AAAAAAAAQKA/4Hjdy3dTf5ENvgdC62D3_00ijXArc8r2ACLcBGAsYHQ/s0/DiceRollerApp_framed%2B%25281%2529.png" imageanchor="1" &gt;&lt;img style="width:200px" id=imgFull border="0" src="https://1.bp.blogspot.com/-aR9uVV5wqNI/YDezM7onBCI/AAAAAAAAQKA/4Hjdy3dTf5ENvgdC62D3_00ijXArc8r2ACLcBGAsYHQ/s0/DiceRollerApp_framed%2B%25281%2529.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;/center&gt; &lt;p id="imgCaption"&gt;(Image of Dice Roller app) &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Nigeria &lt;/strong&gt; &lt;/p&gt; &lt;p&gt; The Google Developer Student Club at Kaduna State University in Nigeria tackled different codelabs and learning pathways in their Android Study Jams. In particular, the group worked on the following topics: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Adding an additional screen to an app &lt;li&gt;Learning how the Jetpack Navigation Component makes it easier to manage navigation in an app &lt;li&gt;Learning the best practices of app architecture &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; With these new skills, the group is now able to start working on building more advanced apps that allow users to navigate between multiple screens. &lt;/p&gt; &lt;center&gt;&lt;a href="https://1.bp.blogspot.com/-seiK4lJdYnI/YDezfl3baMI/AAAAAAAAQKI/bfhmULrppRoCc0OUqcr1ZbAX3grQxVtMQCLcBGAsYHQ/s0/Cupcake.gif" imageanchor="1" &gt;&lt;img style="width:200px" id=imgFull border="0" src="https://1.bp.blogspot.com/-seiK4lJdYnI/YDezfl3baMI/AAAAAAAAQKI/bfhmULrppRoCc0OUqcr1ZbAX3grQxVtMQCLcBGAsYHQ/s0/Cupcake.gif" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;/center&gt; &lt;p id="imgCaption"&gt;(Gif of Cupcake app)&lt;/p&gt; &lt;p&gt; &lt;strong&gt;How to join a Google Developer Student Club and Android Study Jams &lt;/strong&gt; &lt;/p&gt; &lt;p&gt; If you’re a university student looking to learn more about programming alongside a community of your peers, sign up for a &lt;a href="https://developers.google.com/community/dsc"&gt;Google Developer Student Club&lt;/a&gt; near you &lt;a href="https://dsc.community.dev/"&gt;here&lt;/a&gt;. As a part of the community, you’ll have access to special learning opportunities, including Android Study Jams, on many of Google’s developer products. &lt;/p&gt; &lt;p&gt; If you want to lead your own Android Study Jams or explore other free resources for learning Android development, click &lt;a href="https://developer.android.com/teach"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=qCdHL3iZLyY:F-Q-lN9O7O4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=qCdHL3iZLyY:F-Q-lN9O7O4:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=qCdHL3iZLyY:F-Q-lN9O7O4:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/qCdHL3iZLyY" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-y_15uDfl9aQ/YEKqX8YieuI/AAAAAAAAQOI/_HDatKD-AaMqOJliShI7ALhvr0lyHiJIgCLcBGAsYHQ/s72-c/Screen%2BShot%2B2021-03-05%2Bat%2B5.01.09%2BPM.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/02/students-learn-android-app-development.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-1575359366541846708
   </id>
   <published>
    2021-02-24T09:30:00.002-08:00
   </published>
   <updated>
    2021-02-24T11:33:28.599-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="Android" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Jetpack" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Studio" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Compose" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Jetpack" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Jetpack Compose" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <title type="text">Announcing Jetpack Compose Beta!</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-0IvQej1PxyU/YDVZgspz_-I/AAAAAAAAQIw/dhRz58w2WEU_C4s1SfefJv3GvlF0uoVVgCLcBGAsYHQ/s0/TheAndroidShow_Jetpack%2BCompose%2BBlog_021920%2B%25282%2529.jpg "&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-0IvQej1PxyU/YDVZgspz_-I/AAAAAAAAQIw/dhRz58w2WEU_C4s1SfefJv3GvlF0uoVVgCLcBGAsYHQ/s0/TheAndroidShow_Jetpack%2BCompose%2BBlog_021920%2B%25282%2529.jpg"&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/dr0nequeen"&gt;Anna-Chiara Bellini&lt;/a&gt;, Product Manager, &lt;a href="https://twitter.com/crafty"&gt;Nick Butcher&lt;/a&gt;, Developer Relations &lt;/em&gt;&lt;/p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-0IvQej1PxyU/YDVZgspz_-I/AAAAAAAAQIw/dhRz58w2WEU_C4s1SfefJv3GvlF0uoVVgCLcBGAsYHQ/s0/TheAndroidShow_Jetpack%2BCompose%2BBlog_021920%2B%25282%2529.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="The Android Show: Jetpack Compose, Feb. 24 at 9am PT" border="0" data-original-height="968" data-original-width="3250" src="https://1.bp.blogspot.com/-0IvQej1PxyU/YDVZgspz_-I/AAAAAAAAQIw/dhRz58w2WEU_C4s1SfefJv3GvlF0uoVVgCLcBGAsYHQ/s0/TheAndroidShow_Jetpack%2BCompose%2BBlog_021920%2B%25282%2529.jpg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p&gt; Today, we’re launching the beta release of &lt;a href="https://developer.android.com/jetpack/compose"&gt;Jetpack Compose&lt;/a&gt;, our new UI toolkit designed to make it faster and easier to build native apps across all Android platforms. Compose offers modern, declarative Kotlin APIs, helping you build beautiful, responsive apps with way less code. Built to integrate with existing Android apps and Jetpack libraries, you can adopt Compose at your own pace by combining Android Views and Compose. &lt;/p&gt; &lt;p&gt; With this beta release, Compose is API complete and has all the features you need to build production-ready apps. Beta also means API stable, so we won’t change or remove APIs. Now is a great time to start learning Compose and begin planning for how you will use it in an upcoming project or feature once it reaches 1.0 later this year. &lt;/p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/vRjJAWh6JPE" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;/center&gt; &lt;h2&gt;&lt;strong&gt;What's In Beta&lt;/strong&gt;&lt;/h2&gt; &lt;p&gt; Our team has been developing Compose in the open with feedback and participation from the community. Since open sourcing development in 2019, we’ve had 30 public releases, addressed over 700 external bugs, and accepted over 200 external contributions. We love seeing what you’ve been building with Compose and have used your feedback and feature requests to refine our APIs and prioritize our work. Since the alpha release, we’ve added and improved a number of new features: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;🆕 Coroutines support &lt;li&gt;🆕 Accessibility support for Talkback - support for other technologies will be in Stable &lt;li&gt;🆕 Easy to use &lt;a href="https://developer.android.com/codelabs/jetpack-compose-animation"&gt;Animations&lt;/a&gt;, with a completely new API since alpha. &lt;li&gt;&lt;a href="https://developer.android.com/jetpack/compose/interop"&gt;Interoperability&lt;/a&gt; with Views &lt;li&gt;&lt;a href="http://material.io/blog/jetpack-compose-beta"&gt;Material UI Components&lt;/a&gt;, all with @Sampled code &lt;li&gt;Lazy Lists - Jetpack Compose's take on RecyclerView &lt;li&gt;DSL-based &lt;a href="https://developer.android.com/jetpack/compose/layout#contraintlayout"&gt;Constraint Layout&lt;/a&gt; &lt;li&gt;Modifiers &lt;li&gt;Testing &lt;li&gt;Theming and Graphics, with easy support for Dark and Light mode &lt;li&gt;Input and gestures &lt;li&gt;Text and editable text &lt;li&gt;Window management &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; For the beta release, we’ve been focused on ensuring API completeness; that all foundational APIs are in place for us to continue to build upon for 1.0 and beyond. We’ll work on stabilizing these APIs up to our 1.0 release with particular focus on app performance and accessibility. &lt;/p&gt; &lt;p&gt; Compose Beta is supported by the latest Canary of &lt;a href="https://developer.android.com/studio/preview?gclid=CjwKCAiAyc2BBhAaEiwA44-wW02UxPzHservPxmOjAhKgYKMLmJF1vWR4Vvln4M6tZNIDgw2l3qDxxoCmawQAvD_BwE&amp;gclsrc=aw.ds"&gt;Android Studio Arctic Fox&lt;/a&gt;, which features many &lt;a href="https://developer.android.com/jetpack/compose/tooling"&gt;new tools&lt;/a&gt;: &lt;/p&gt; &lt;p&gt; &lt;ul&gt; 🆕 Live Literals: real time update of literals in Preview and on device or emulator &lt;/p&gt; &lt;p&gt; 🆕 &lt;a href="https://developer.android.com/jetpack/compose/animation#tooling"&gt;Animation Preview&lt;/a&gt;: inspect and playback animations &lt;/p&gt; &lt;p&gt; 🆕 &lt;a href="https://developer.android.com/studio/preview/features#compose-layout-inspector"&gt; Compose support in the Layout Inspector&lt;/a&gt; &lt;/p&gt; &lt;p&gt; 🆕 Interactive preview: inspect and interact with a Composable in isolation &lt;/p&gt; &lt;p&gt; 🆕 Deploy Preview: to deploy a Composable on your device without needing a full app &lt;/p&gt; &lt;/ul&gt; &lt;a href="https://1.bp.blogspot.com/-4sRxCjW0pv4/YDVXZXFYDPI/AAAAAAAAQIg/oAG126nEJ2Qwv6pOCGZ_aMj3TgAvk3Y5gCLcBGAsYHQ/s0/live_literal%2B%25281%2529.gif" imageanchor="1" &gt;&lt;img style="width:100%" id=imgFull border="0" src="https://1.bp.blogspot.com/-4sRxCjW0pv4/YDVXZXFYDPI/AAAAAAAAQIg/oAG126nEJ2Qwv6pOCGZ_aMj3TgAvk3Y5gCLcBGAsYHQ/s0/live_literal%2B%25281%2529.gif" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt;Live Literals on Android Emulator&lt;/p&gt; &lt;br&gt; &lt;a href="https://1.bp.blogspot.com/-DdXJJZEujIs/YDVX7L2lTzI/AAAAAAAAQIo/5a-W1_ZGStUsOVu-hSXKcRNrf9ds91LMACLcBGAsYHQ/s0/inspector_compose_v3%2B%25281%2529.gif" imageanchor="1" &gt;&lt;img style="width:100%" id=imgFull border="0" src="https://1.bp.blogspot.com/-DdXJJZEujIs/YDVX7L2lTzI/AAAAAAAAQIo/5a-W1_ZGStUsOVu-hSXKcRNrf9ds91LMACLcBGAsYHQ/s0/inspector_compose_v3%2B%25281%2529.gif" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt;Layout Inspector for Jetpack Compose &lt;/p&gt; &lt;h2&gt;&lt;strong&gt;Works with your existing app&lt;/strong&gt;&lt;/h2&gt; &lt;p&gt; Jetpack Compose is designed to work seamlessly with Android Views, letting you adopt at your own pace. You can embed Compose UIs within Android Views and use Views within Compose. We lay out a number of adoption strategies in our &lt;a href="https://developer.android.com/jetpack/compose/interop"&gt;interoperability documentation&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; In addition to View interop, we &lt;a href="https://developer.android.com/jetpack/compose/libraries"&gt;integrate with common libraries&lt;/a&gt; to help you to add Compose to your existing applications—no need to rewrite or re-architect your app. We offer integrations with: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Navigation &lt;li&gt;ViewModel &lt;li&gt;LiveData / Rx / Flow &lt;li&gt;Paging &lt;li&gt;Hilt &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; The &lt;a href="https://github.com/material-components/material-components-android-compose-theme-adapter"&gt;MDC-Android Compose Theme Adapter&lt;/a&gt; and &lt;a href="https://github.com/chrisbanes/accompanist"&gt;Accompanist&lt;/a&gt; libraries provide integrations with &lt;a href="https://github.com/material-components/material-components-android-compose-theme-adapter"&gt;Material&lt;/a&gt; and &lt;a href="https://github.com/chrisbanes/accompanist/tree/main/appcompat-theme"&gt;AppCompat&lt;/a&gt; XML themes so you don’t need to duplicate theme definitions. Accompanist also offers wrappers for common &lt;a href="https://github.com/chrisbanes/accompanist/#image-loading"&gt;image loading libraries&lt;/a&gt;. &lt;/p&gt; &lt;h2&gt;&lt;strong&gt;Thinking in Compose&lt;/strong&gt;&lt;/h2&gt; &lt;p&gt; Jetpack Compose is a &lt;em&gt;declarative&lt;/em&gt; UI toolkit, a paradigm shift from the current View system, where you describe &lt;em&gt;what&lt;/em&gt; your UI should look like for a given application state, not &lt;em&gt;how&lt;/em&gt; to produce it. Compose takes care of updating your UI when your app state changes, so you don’t have to manipulate your UI into the desired state which can be tedious and error prone. &lt;/p&gt; &lt;p&gt; Built entirely in Kotlin, Compose takes advantage of its great &lt;a href="https://developer.android.com/jetpack/compose/kotlin"&gt;language features&lt;/a&gt; to offer powerful, succinct, intuitive APIs. &lt;a href="https://developer.android.com/kotlin/coroutines"&gt;Coroutines&lt;/a&gt; for example enable us to write much simpler async APIs such as describing gestures, animation or scrolling. This makes it easier to write code that combines async events, like a gesture which hands off to an animation, all with cancellation and clean-up provided by structured concurrency. &lt;/p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/Ef1xKWjA9E8" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;/center&gt; &lt;h2&gt;&lt;strong&gt;Learning Compose&lt;/strong&gt;&lt;/h2&gt; &lt;p&gt; To help you and your team learn all about Jetpack Compose, we’ve updated our &lt;a href="http://goo.gle/compose-pathway"&gt;learning pathway&lt;/a&gt;; a curated list of videos, hands-on codelabs and key docs to get you started. Today we’re releasing new &amp; updated &lt;a href="https://goo.gle/compose-docs"&gt;documentation guides&lt;/a&gt;, a number of screencasts and a new &lt;a href="https://developer.android.com/codelabs/jetpack-compose-animation"&gt;Animation Codelab&lt;/a&gt; to help dive deeper into how to build with Compose. From guidance on &lt;a href="https://developer.android.com/jetpack/compose/architecture"&gt;architecture&lt;/a&gt;, &lt;a href="https://developer.android.com/jetpack/compose/accessibility"&gt;accessibility&lt;/a&gt; and &lt;a href="https://developer.android.com/jetpack/compose/testing"&gt;testing&lt;/a&gt;, to deep dives into &lt;a href="https://developer.android.com/jetpack/compose/animation"&gt;animation&lt;/a&gt;, &lt;a href="https://developer.android.com/jetpack/compose/lists"&gt;lists&lt;/a&gt; or &lt;a href="https://developer.android.com/jetpack/compose/mental-model"&gt;thinking in Compose&lt;/a&gt;, we have guides to help you get up to speed. &lt;/p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/kdwofTaEHrs" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt; &lt;p&gt; We also offer 8 &lt;a href="https://github.com/android/compose-samples"&gt;official sample applications&lt;/a&gt; if you want to jump straight in and see Compose in action. We have simple to complex samples, each showcasing different APIs and use cases. Check the &lt;a href="https://github.com/android/compose-samples#-samples"&gt;readme&lt;/a&gt; for more details. &lt;/p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-3k0SUG6BWIA/YDWc78VVWTI/AAAAAAAAQI4/NXO2Dh0fJ5Qs2aZQ4p0R1fpIg_Nx_EMegCLcBGAsYHQ/s0/compose_samples.gif" imageanchor="1" &gt;&lt;img style="width:100%" style="width:100%" id=imgFull border="0" src="https://1.bp.blogspot.com/-3k0SUG6BWIA/YDWc78VVWTI/AAAAAAAAQI4/NXO2Dh0fJ5Qs2aZQ4p0R1fpIg_Nx_EMegCLcBGAsYHQ/s0/compose_samples.gif" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;/center&gt; &lt;br&gt; &lt;h2&gt;#AndroidDevChallenge: learn Compose and win prizes&lt;/h2&gt; &lt;p&gt; If you’re ready to get started with Compose–and also want to win some prizes along the way, &lt;a href="http://goo.gle/AndroidDevChallenge-1"&gt;check out the #AndroidDevChallenge&lt;/a&gt;. For the next four weeks, we’ll have weekly challenges designed to give your very own insights into Jetpack Compose, so you can fly through your projects. Compete to win new prizes for each challenge, with over one thousand prizes to win including a Google Pixel 5. &lt;a href="http://goo.gle/AndroidDevChallenge-1"&gt;You can read more about the first weekly challenge - starting today - right here.&lt;/a&gt; &lt;/p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/sZK3HSX4cRU" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt; &lt;p&gt; With Jetpack Compose reaching Beta—with stable APIs and feature complete for 1.0—it's a great time to start learning Jetpack Compose and planning how you might use it in an upcoming project. We’d love to hear your &lt;a href="http://goo.gle/compose-feedback"&gt;feedback&lt;/a&gt; on adopting Compose in your app or join the discussion in the &lt;a href="http://slack.kotlinlang.org/"&gt;Kotlin Slack&lt;/a&gt; #compose channel. &lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=TT6hcjmark8:VX5PjNATop8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=TT6hcjmark8:VX5PjNATop8:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=TT6hcjmark8:VX5PjNATop8:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/TT6hcjmark8" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-0IvQej1PxyU/YDVZgspz_-I/AAAAAAAAQIw/dhRz58w2WEU_C4s1SfefJv3GvlF0uoVVgCLcBGAsYHQ/s72-c/TheAndroidShow_Jetpack%2BCompose%2BBlog_021920%2B%25282%2529.jpg" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/02/announcing-jetpack-compose-beta.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-719162591926299237
   </id>
   <published>
    2021-02-24T09:28:00.002-08:00
   </published>
   <updated>
    2021-02-24T12:50:09.804-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="#AndroidDev" />
   <category scheme="http://www.blogger.com/atom/ns#" term="#AndroidDevChallenge" />
   <category scheme="http://www.blogger.com/atom/ns#" term="#Androiddevelopment" />
   <category scheme="http://www.blogger.com/atom/ns#" term="#JetpackCompose" />
   <category scheme="http://www.blogger.com/atom/ns#" term="#TheAndroidShow" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <title type="text">Android Dev Challenge: lift off with Jetpack Compose</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-6fNVuYUzbmE/YDRI8cdnkmI/AAAAAAAAQH0/2U_XEL2r4LMYeWJbRHnVHrhaA-FrjEKywCLcBGAsYHQ/s0/JCM21013_Thumbnails-03.jpg"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-6fNVuYUzbmE/YDRI8cdnkmI/AAAAAAAAQH0/2U_XEL2r4LMYeWJbRHnVHrhaA-FrjEKywCLcBGAsYHQ/s0/JCM21013_Thumbnails-03.jpg"&gt; &lt;p&gt;&lt;em&gt;Posted by The Jetpack Compose Team &lt;/em&gt;&lt;p&gt; &lt;p&gt; &lt;a href="https://developer.android.com/jetpack/compose"&gt;Jetpack Compose&lt;/a&gt; is Android’s modern toolkit for building native UI. It enables you to quickly bring your app to life with less code, powerful tools, and intuitive Kotlin APIs. With the &lt;a href="https://android-developers.googleblog.com/2021/02/announcing-jetpack-compose-beta.html"&gt;Beta of Jetpack Compose&lt;/a&gt; released today, this is the perfect time to learn Compose and get ready to adopt it. To help you get started with Jetpack Compose we are launching a new #AndroidDevChallenge! &lt;/p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/sZK3HSX4cRU" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt; &lt;p&gt; For the next four weeks, the #AndroidDevChallenge will be launching a series of weekly challenges to help you build better apps faster with Jetpack Compose. Oriented around “lift off insights," each challenge focuses on a new area of Compose, from animations to Material Theming, composables to lists and more! Compete to win new prizes for each challenge, with over one thousand prizes to win including a Pixel 5.&lt;small&gt; &lt;sup&gt;1&lt;/sup&gt; &lt;/small&gt; The first challenge starts today! &lt;/p&gt; &lt;h2&gt;The challenges&lt;/h2&gt; &lt;p&gt; Every week brings a new challenge with its own rules and tasks. Every Wednesday starting today we’ll publish a blog post containing the full description of what you need to do and how long you have to complete the task. Each challenge will help you get familiar with the compose &lt;a href="https://developer.android.com/jetpack/compose/mental-model"&gt;mental model&lt;/a&gt; and different Compose APIs - from basic Composables like &lt;code&gt; Text &lt;/code&gt; and &lt;code&gt; List,&lt;/code&gt; to state, animations and more. &lt;/p&gt; &lt;p&gt; Your solution to each challenge must be implemented in a GitHub repository. Make a copy of this &lt;a href="http://goo.gle/adc-template"&gt;Github repository template&lt;/a&gt; and follow the instructions in the README. The template contains a basic &lt;code&gt;Hello World!&lt;/code&gt; in Compose and a continuous integration setup. &lt;/p&gt; &lt;h2&gt;Week #1 - Puppy adoption app&lt;/h2&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-d6KGTLsbI3M/YDQSlsM1LXI/AAAAAAAAQHQ/bFFOakT2je4o-y0oPCfW9gzBjuqmfi4dQCLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-11%2Bat%2B10.58.49.png" style="display: block; padding: -10em; text-align: center; "&gt;&lt;img style= "width:200px" id="floatLeft" alt="Android 12 logo" border="0" data-original-height="784" data-original-width="784" src="https://1.bp.blogspot.com/-d6KGTLsbI3M/YDQSlsM1LXI/AAAAAAAAQHQ/bFFOakT2je4o-y0oPCfW9gzBjuqmfi4dQCLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-11%2Bat%2B10.58.49.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt; Let’s start the #AndroidDevChallenge with a &lt;del&gt;bang&lt;/del&gt; bark: build a puppy adoption app! The app should contain an overview screen that displays &lt;strong&gt;a list of puppies&lt;/strong&gt;, and a &lt;strong&gt;detail screen&lt;/strong&gt; showing each puppy's details. You have until &lt;strong&gt;March 2nd, 23:59 PST to &lt;a href="https://developer.android.com/dev-challenge#the-latest-challenge"&gt;submit your entry. &lt;/a&gt; &lt;/strong&gt; &lt;small&gt; &lt;sup&gt;2&lt;/sup&gt; &lt;/small&gt; &lt;/p&gt; &lt;p&gt; Your UI must be fully built in Compose. Your submission will only be judged based on your app’s UI layer. To help you with the implementation, check out the Compose documentation on &lt;a href="https://developer.android.com/jetpack/compose/layout"&gt;layouts&lt;/a&gt;, &lt;a href="https://youtu.be/BhqPpUYJYeQ"&gt;lists&lt;/a&gt;, text and navigation. For some paws-on learning try out the &lt;a href="https://goo.gle/compose-pathway"&gt;Compose pathway&lt;/a&gt;, with codelabs covering several topics useful in completing this challenge. &lt;/p&gt; &lt;p&gt; Are you a 🐱rather than a 🐶 person? Submissions for any type of pet adoption app are welcomed. &lt;/p&gt; &lt;p&gt; We look forward to seeing what you build! &lt;/p&gt; &lt;h2&gt;This week’s prize&lt;/h2&gt; &lt;p&gt; Our first challenge kicks off with a prize that makes for the perfect sidekick as you’re flying through Compose: a limited edition trophy of our Jetpack Compose superhero, made of LEGO bricks. The first 500 people to successfully complete this challenge and submit their entry can add this trophy to their collection of Android figurines, showing off how you’re a winner for the first week’s #AndroidDevChallenge. &lt;/p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-1PGx_uf4kVs/YDRRg0JlwSI/AAAAAAAAQIA/PBpnzWNqsashjrqb05oO0MBWRuBbw0YegCLcBGAsYHQ/s0/Lego%2BTrophy%2BAnimation_Overlay.gif" imageanchor="1" &gt;&lt;img id=imgFull style="width:100%" border="0" src="https://1.bp.blogspot.com/-1PGx_uf4kVs/YDRRg0JlwSI/AAAAAAAAQIA/PBpnzWNqsashjrqb05oO0MBWRuBbw0YegCLcBGAsYHQ/s0/Lego%2BTrophy%2BAnimation_Overlay.gif" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;/center&gt; &lt;p id="imgCaption"&gt;Week #1 prize: Jetpack Compose superhero&lt;/p&gt; &lt;h2&gt;Help make Jetpack Compose better&lt;/h2&gt; &lt;p&gt; Community is at the heart of Jetpack Compose and your feedback helps us build a better product: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;File issues with Jetpack Compose on the official &lt;a href="http://goo.gle/compose-feedback"&gt;issue tracker&lt;/a&gt;. &lt;li&gt;&lt;a href="https://g.co/userresearch/androiddev21"&gt;Sign up&lt;/a&gt; to be part of the Jetpack Compose research studies. &lt;/li&gt; &lt;/ul&gt; &lt;br&gt; &lt;br&gt; &lt;small&gt; &lt;sup&gt;1&lt;/sup&gt; There will be new prizes for each week’s challenge; for weeks when a Google Pixel 5 is a prize, we will offer a similarly valued electronics gift card for winners that reside in a country where a Google Pixel 5 is unavailable. See the official rules for more information. &lt;/small&gt; &lt;br&gt; &lt;small&gt;&lt;sup&gt;2&lt;/sup&gt; Please review the &lt;a href="http://goo.gle/dev-challenge-terms"&gt;link&lt;/a&gt; for the full official rules associated with the entry. &lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=iqqBMqCqzrs:5VwSUD8BgZs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=iqqBMqCqzrs:5VwSUD8BgZs:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=iqqBMqCqzrs:5VwSUD8BgZs:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/iqqBMqCqzrs" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-6fNVuYUzbmE/YDRI8cdnkmI/AAAAAAAAQH0/2U_XEL2r4LMYeWJbRHnVHrhaA-FrjEKywCLcBGAsYHQ/s72-c/JCM21013_Thumbnails-03.jpg" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/02/android-dev-challenge-lift-off-with.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-8726143911834095764
   </id>
   <published>
    2021-02-23T09:05:00.000-08:00
   </published>
   <updated>
    2021-02-23T09:05:20.947-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="#Android" />
   <category scheme="http://www.blogger.com/atom/ns#" term="#JetpackCompose" />
   <category scheme="http://www.blogger.com/atom/ns#" term="#TheAndroidShow" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android app development" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Developer" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <category scheme="http://www.blogger.com/atom/ns#" term="UI" />
   <title type="text">Here's how to watch #TheAndroidShow in just under 24 hours</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-yWyeHjks1jw/YDU086C56HI/AAAAAAAAQIY/yfS0KYqErU0AJcB74Nha-FM2qE_p5dWFQCLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-23%2Bat%2B12.01.15%2BPM.png"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-yWyeHjks1jw/YDU086C56HI/AAAAAAAAQIY/yfS0KYqErU0AJcB74Nha-FM2qE_p5dWFQCLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-23%2Bat%2B12.01.15%2BPM.png"&gt; &lt;p&gt;&lt;em&gt;Posted by The Jetpack Compose Team&lt;/em&gt;&lt;p&gt; &lt;p&gt; In less than 24 hours, we're giving you a backstage pass to &lt;a href="https://developer.android.com/jetpack/compose"&gt;Jetpack Compose&lt;/a&gt;, Android's modern toolkit for building native UIs, on &lt;strong&gt;&lt;a href="https://landing.google.com/theandroidshow/"&gt;#TheAndroidShow&lt;/a&gt;&lt;/strong&gt;. Hosted by Kari Byron, you'll hear the latest on Jetpack Compose from the people who built it, plus a fireside interview with Android's Dave Burke. &lt;/p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/7T5CY4uz9bY" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;/center&gt; &lt;h2&gt;The show kicks off live at 9AM PT!&lt;/h2&gt; &lt;p&gt; Broadcasting live on February 24th at 9AM PT, you’ll be able to watch the show at &lt;a href="https://landing.google.com/theandroidshow/"&gt;goo.gle/TheAndroidShow&lt;/a&gt;, where you’ll also be able to find more information and links to all of the things we covered in the show. Or if you prefer, you can watch directly on &lt;a href="https://www.youtube.com/watch?v=vRjJAWh6JPE&amp;list=PLWz5rJ2EKKc98J4VE1glWGt5b90VfXZ1e"&gt;YouTube&lt;/a&gt; or &lt;a href="https://twitter.com/i/events/1359671333559234562"&gt;Twitter&lt;/a&gt;. &lt;/p&gt; &lt;h2&gt;There’s still time to ask your Jetpack Compose questions, use #TheAndroidShow&lt;/h2&gt; &lt;p&gt; Got a burning Jetpack Compose question? Want to learn about annotating a function type with @ Composable? Or how to add a static parameter to Composable functions at the compiler level? &lt;strong&gt;Tweet us your Jetpack Compose questions now, using #TheAndroidShow.&lt;/strong&gt; We’ve assembled a team of experts, ready to answer your questions live on #TheAndroidShow; tune in on February 24 to see if we cover your question! &lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=cpHHNym5EQA:vl2JSzfZMR0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=cpHHNym5EQA:vl2JSzfZMR0:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=cpHHNym5EQA:vl2JSzfZMR0:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/cpHHNym5EQA" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-yWyeHjks1jw/YDU086C56HI/AAAAAAAAQIY/yfS0KYqErU0AJcB74Nha-FM2qE_p5dWFQCLcBGAsYHQ/s72-c/Screen%2BShot%2B2021-02-23%2Bat%2B12.01.15%2BPM.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/02/how-to-watch-theandroidshow-24-hours.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-1623172637161718040
   </id>
   <published>
    2021-02-22T10:00:00.000-08:00
   </published>
   <updated>
    2021-02-22T10:00:26.895-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="Android app development" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <category scheme="http://www.blogger.com/atom/ns#" term="MotionLayout" />
   <title type="text">MAD Skills Motion Layout: wrap-up</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-ysVDIhhHhd8/YDPopYN6LSI/AAAAAAAAQG8/14pOfh_9SrQ0Wl5o9ebBdqFrTSEooZJpQCLcBGAsYHQ/s0/Untitled.jpg"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-ysVDIhhHhd8/YDPopYN6LSI/AAAAAAAAQG8/14pOfh_9SrQ0Wl5o9ebBdqFrTSEooZJpQCLcBGAsYHQ/s0/Untitled.jpg"&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/chethaase?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor"&gt;Chet Haase&lt;/a&gt;, Developer Relations Engineer&lt;/em&gt;&lt;p&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-ysVDIhhHhd8/YDPopYN6LSI/AAAAAAAAQG8/14pOfh_9SrQ0Wl5o9ebBdqFrTSEooZJpQCLcBGAsYHQ/s0/Untitled.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Android graphic" border="0" data-original-height="480" data-original-width="1600" src="https://1.bp.blogspot.com/-ysVDIhhHhd8/YDPopYN6LSI/AAAAAAAAQG8/14pOfh_9SrQ0Wl5o9ebBdqFrTSEooZJpQCLcBGAsYHQ/s0/Untitled.jpg"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt; &lt;p&gt; We recently finished &lt;a href="https://www.youtube.com/playlist?list=PLWz5rJ2EKKc_PEOEHNBEyy6tPX1EgtUw2"&gt;another series of MAD Skills videos&lt;/a&gt; - this time on Motion Layout. We covered ways in which you can use the API and the design tool to create rich, custom, and complex animations for your users. &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; Check out the episodes below to increase your knowledge and skills in different areas of the Motion Layout API and design tool. And watch the live Q&amp;A episode, featuring engineers on the Motion Layout and Developer Relations teams. &lt;/p&gt; &lt;h2&gt;Episode 1 - ConstraintSet Animations&lt;/h2&gt; &lt;p&gt; This video explores how ConstraintSets are used to define different states of your UI that you animate between. Along the way, &lt;a href="https://twitter.com/objcode?lang=en"&gt;Sean&lt;/a&gt; shows how to use Motion Editor in Android Studio to create and edit these transitions. &lt;/p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/M1jE3W3_NTQ" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt; &lt;h2&gt;Episode 2 - Keyframes&lt;/h2&gt; &lt;p&gt; This episode shows how to use Keyframes in a MotionLayout animation to customize the animation by altering the values of various properties over time. For example, you can use keyframes to change the path an object takes between start and end, instead of following just the default linear path it would follow otherwise. &lt;/p&gt; &lt;center&gt;&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/n_om_WcfSOM" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;/center&gt; &lt;h2&gt;Episode 3 - Multiple ConstraintSets&lt;/h2&gt; &lt;p&gt; In this third episode, &lt;a href="https://twitter.com/objcode?lang=en"&gt;Sean&lt;/a&gt; shows how you can add ConstraintSets, beyond the default two (start + end) to create more complex animations, or transitions that flow through multiple states between the start and end. &lt;/p&gt; &lt;p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/k2HyX6fd_as" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt; &lt;h2&gt;Episode 4 - Building a Collapsible Header&lt;/h2&gt; &lt;p&gt; In the fourth episode, explains how to build a collapsible toolbar using Motion Layout, which is a common place where this API shines. Along the way, you'll learn how to animate custom attributes using MotionLayout. &lt;/p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/xXR9bOHJ648" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt; &lt;h2&gt;Episode 5 - Live Q&amp;A&lt;/h2&gt; &lt;p&gt; The final episode of the series was a live Q&amp;A, streamed and recorded on February 18th. It’s too late to see it or ask your questions live, but check out the recording to watch the conversation between me (asking the Qs) and &lt;a href="https://twitter.com/objcode?lang=en"&gt;Sean&lt;/a&gt;, &lt;a href="https://twitter.com/johnhoford?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor"&gt;John&lt;/a&gt;, and &lt;a href="https://twitter.com/camaelon?lang=en"&gt;Nicolas&lt;/a&gt; (supplying the As). &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/SZnL6VtYK3U" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt; &lt;h2&gt;More Motion Layout Resources&lt;/h2&gt; &lt;p&gt; There are plenty of other resources to learn more about how to use Motion Layout, besides &lt;a href="https://www.youtube.com/playlist?list=PLWz5rJ2EKKc_PEOEHNBEyy6tPX1EgtUw2"&gt;this MAD Skills series&lt;/a&gt;, including: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=o8c1RO3WgBA&amp;list=PLWz5rJ2EKKc-bcyUTIFAr97ZtRkwM7S4y"&gt;MotionTags&lt;/a&gt;: This series of screencasts on specific areas of the Motion Layout API just wrapped up. &lt;li&gt;&lt;a href="https://developer.android.com/training/constraint-layout/motionlayout"&gt;Motion Layout Guide&lt;/a&gt;: This guide on our developer site provides a great jumping-off point with an overview of the API, code snippets showing how to get started, and examples of how to do various kinds of animations with Motion Layout. &lt;li&gt;&lt;a href="https://developer.android.com/training/constraint-layout/motionlayout/examples"&gt;Examples&lt;/a&gt;: This doc has several visual examples, alongside the XML it took to create them. &lt;li&gt;&lt;a href="http://androidbackstage.blogspot.com/2020/09/adb-148-constraintmotionlayouteditor.html"&gt;ADB podcast&lt;/a&gt;: I had a conversation with John, Nicolas, and Sean (not coincidentally, the same people who joined me for the livestream Q&amp;A on MotionLayout) a few weeks ago. If you want to hear more about MotionLayout and ConstraintLayout, check it out on the &lt;a href="http://androidbackstage.blogspot.com/2020/09/adb-148-constraintmotionlayouteditor.html"&gt;podcast site&lt;/a&gt; or in your favorite podcast app. &lt;/li&gt; &lt;/ul&gt; &lt;h2&gt;But Wait, There’s More!&lt;/h2&gt; &lt;p&gt; The Motion Layout series may have ended, but there’s still plenty still to come in the MAD Skills series. Be sure to check the &lt;a href="https://www.youtube.com/playlist?list=PLWz5rJ2EKKc91i2QT8qfrfKgLNlJiG1z7"&gt;MAD Skills playlist&lt;/a&gt; on YouTube, the &lt;a href="https://medium.com/androiddevelopers/tagged/mad-skills"&gt;articles on Medium&lt;/a&gt;, or &lt;a href="https://developer.android.com/series/mad-skills"&gt;this handy landing page&lt;/a&gt; that points to all of it. &lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=yVG5Fy_BgK0:IlTIgkeuXDc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=yVG5Fy_BgK0:IlTIgkeuXDc:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=yVG5Fy_BgK0:IlTIgkeuXDc:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/yVG5Fy_BgK0" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-ysVDIhhHhd8/YDPopYN6LSI/AAAAAAAAQG8/14pOfh_9SrQ0Wl5o9ebBdqFrTSEooZJpQCLcBGAsYHQ/s72-c/Untitled.jpg" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/02/mad-skills-motion-layout-wrap-up.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-2095580883333594742
   </id>
   <published>
    2021-02-18T10:00:00.010-08:00
   </published>
   <updated>
    2021-02-24T10:44:16.582-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="#Android12" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android app development" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android12" />
   <category scheme="http://www.blogger.com/atom/ns#" term="compatibility" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="notifications" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Privacy" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Security" />
   <category scheme="http://www.blogger.com/atom/ns#" term="UI" />
   <title type="text">First preview of Android 12</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-eRnBIDn-ZZE/YC6eGA2hC5I/AAAAAAAAQGY/bea6RxVXWcs9q5FoLEZtjuTnLZvegzY2ACLcBGAsYHQ/s0/Android%2B12_logo.png"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-eRnBIDn-ZZE/YC6eGA2hC5I/AAAAAAAAQGY/bea6RxVXWcs9q5FoLEZtjuTnLZvegzY2ACLcBGAsYHQ/s0/Android%2B12_logo.png"&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-2WiKDQwO6nI/YC2vlLLtUyI/AAAAAAAAQFM/lje72qqUt74m22FTZZx_0VmfFnfjODSiACLcBGAsYHQ/s0/image6.png" style="display: block; padding: -10em; text-align: center; "&gt;&lt;img id="floatRight" alt="Android 12 logo" border="0" data-original-height="784" data-original-width="784" src="https://1.bp.blogspot.com/-2WiKDQwO6nI/YC2vlLLtUyI/AAAAAAAAQFM/lje72qqUt74m22FTZZx_0VmfFnfjODSiACLcBGAsYHQ/s0/image6.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&lt;em&gt;Posted by Dave Burke, VP of Engineering&lt;/em&gt;&lt;p&gt; &lt;p&gt; Every day, Android apps help billions of people work, play, communicate, and create on a wide range of devices from phones and laptops to tablets, TVs, and cars. As more people come to rely on the experiences you build, their expectations can rise just as fast. It’s one of the reasons we share Android releases with you early: your feedback helps us build a better platform for your apps and all of the people who use them. Today, we’re releasing the first Developer Preview of Android 12, the next version of Android, for your testing and feedback. &lt;/p&gt; &lt;p&gt; With each version, we’re working to make the OS smarter, easier to use, and better performing, with privacy and security at the core. In Android 12 we’re also working to give you new tools for building great experiences for users. Starting with things like compatible media transcoding, which helps your app to work with the latest video formats if you don’t already support them, and easier copy/paste of rich content into your apps, like images and videos. We’re also adding privacy protections and optimizing performance to keep your apps responsive. &lt;/p&gt; &lt;p&gt; Today’s first preview is just the start for Android 12, and we’ll have lots more to share as we move through the release. Read on for a taste of what’s new in Android 12, and visit the &lt;a href="https://developer.android.com/about/versions/12"&gt;Android 12 developer site&lt;/a&gt; for details on &lt;a href="https://developer.android.com/about/versions/12/download"&gt;downloads for Pixel&lt;/a&gt; and release &lt;a href="https://developer.android.com/about/versions/12/overview#timeline"&gt;timeline&lt;/a&gt;. As always, it’s crucial to get your feedback early, to help us incorporate it into the final product, so &lt;a href="https://developer.android.com/about/versions/12/feedback"&gt;let us know what you think&lt;/a&gt;! &lt;/p&gt; &lt;p&gt; Alongside the work we’re doing in Android 12, later this month we’ll have more to share on another important tool that helps you create great user experiences more easily: Jetpack Compose, our modern toolkit for building native UI. &lt;a href="http://goo.gle/TheAndroidShow"&gt;Join us on #TheAndroidShow&lt;/a&gt; for a behind-the-scenes look at Jetpack Compose, livestreamed on February 24 at 9AM PT, and tweet your Jetpack Compose questions using #TheAndroidShow to have them answered live on the show. &lt;/p&gt; &lt;h2&gt;&lt;strong&gt;Trust and safety&lt;/strong&gt;&lt;/h2&gt; &lt;p&gt; Privacy is at the heart of everything we do, and in Android 12 we’re continuing to focus on giving users more transparency and control while keeping their devices and data secure. In today’s release we’ve added new controls over identifiers that can be used for tracking, safer defaults for app components, and more. These changes may affect your apps, so we recommend testing as soon as possible. Watch for more privacy and security features coming in later preview releases. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Modern SameSite cookie behaviors in WebView&lt;/strong&gt; - In line with &lt;a href="https://blog.chromium.org/2020/02/samesite-cookie-changes-in-february.html"&gt;changes to Chrome&lt;/a&gt; and other browsers, WebView includes new SameSite cookie behaviors to provide additional security and privacy and give users more transparency and control over how cookies can be used across sites. &lt;a href="https://developer.android.com/about/versions/12/behavior-changes-12#samesite"&gt;More here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Restricted Netlink MAC &lt;/strong&gt;- We’re continuing to help developers migrate to &lt;a href="https://developer.android.com/training/articles/user-data-ids"&gt;privacy-protecting resettable identifiers&lt;/a&gt;. In a multi-release effort to ease migration of device-scoped Netlink MAC, in Android 11 we restricted access to it based on API level 30, and in Android 12 we’re applying the restriction for all apps - regardless of targetSDK level. &lt;a href="https://developer.android.com/about/versions/12/behavior-changes-all#mac-address"&gt;More here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Safer exporting of components - &lt;/strong&gt;To prevent apps from inadvertently exporting activities, services, and receivers, we’re changing the default handling of the &lt;a href="https://developer.android.com/guide/topics/manifest/activity-element#exported"&gt;android:exported&lt;/a&gt; attribute to be more explicit. With this change, components that declare one or more intent filters must now explicitly declare an android:exported attribute. You should inspect your components in the manifest in order to avoid installation errors related to this change. &lt;a href="https://developer.android.com/about/versions/12/behavior-changes-12#exported"&gt;More here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Safer handling of Intents&lt;/strong&gt; - To make handling PendingIntents more secure, Android 12 requires apps to explicitly declare a mutability flag, either &lt;a href="https://developer.android.com/reference/android/app/PendingIntent#FLAG_MUTABLE"&gt;FLAG_MUTABLE&lt;/a&gt; or the new &lt;a href="https://developer.android.com/reference/android/app/PendingIntent#FLAG_IMMUTABLE"&gt;FLAG_IMMUTABLE&lt;/a&gt;, for each PendingIntent. &lt;a href="https://developer.android.com/about/versions/12/behavior-changes-12#pending-intent-mutability"&gt;More here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; You can read more about these and other privacy and security changes &lt;a href="https://developer.android.com/about/versions/12/behavior-changes-12"&gt;here&lt;/a&gt;. &lt;/p&gt; &lt;h2&gt;&lt;strong&gt;Better user experience tools&lt;/strong&gt;&lt;/h2&gt; &lt;p&gt; In Android 12 we’re investing in key areas to help deliver a polished experience and better performance for users. Here are some of the updates so far. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Compatible media transcoding&lt;/strong&gt; - With the prevalence of HEVC hardware encoders on mobile devices, camera apps are increasingly capturing in HEVC format, which offers significant improvements in quality and compression over older codecs. Most apps should support HEVC, but for apps that can’t, we’re introducing compatible media transcoding. &lt;/p&gt; &lt;p&gt; With this feature, an app that doesn’t support HEVC can have the platform automatically transcode the file into AVC, a format that is widely compatible. The transcoding process takes time, depending on the video and hardware properties of the device. As an example, a one minute 1080p video at 30fps takes around 9 seconds to transcode on a Pixel 4. You can opt-in to use the transcoding service by just declaring the media formats that your apps don't support. For developers, we strongly recommend that your apps support HEVC, and if that’s not possible, enable compatible media transcoding. The feature will be active on all devices using HEVC format for video capture. We'd love to hear your feedback on this feature. &lt;a href="https://developer.android.com/about/versions/12/features/compatible-media-transcoding"&gt;More here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;AVIF image support&lt;/strong&gt; - To give you higher image quality with more efficient compression, Android 12 introduces platform support for &lt;a href="https://en.wikipedia.org/wiki/AV1#AV1_Image_File_Format_(AVIF)"&gt;AV1 Image File Format&lt;/a&gt; (AVIF). AVIF is a container format for images and sequences of images encoded using &lt;a href="https://en.wikipedia.org/wiki/AV1"&gt;AV1&lt;/a&gt;. Like other modern image formats, AVIF takes advantage of the intra-frame encoded content from video compression. This dramatically improves image quality for the same file size when compared to older image formats, such as JPEG. &lt;/p&gt; &lt;p id="floatLeft"&gt; AVIF (18.2kB) &lt;/p&gt; &lt;p id="floatRight"&gt; JPEG (20.7kB) &lt;/p&gt; &lt;div id="flexParent"&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-bj8bL6ZacSs/YC2xpy2BjAI/AAAAAAAAQFY/lCoN7T0pPYQRiSG-KRZR9B5FgBMtOCnfACLcBGAsYHQ/s0/image4.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img id="flexImg" alt="race car photo in AVIF (18.2kB)" border="0" data-original-height="1080" data-original-width="1920" src="https://1.bp.blogspot.com/-bj8bL6ZacSs/YC2xpy2BjAI/AAAAAAAAQFY/lCoN7T0pPYQRiSG-KRZR9B5FgBMtOCnfACLcBGAsYHQ/s0/image4.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-ZuSZwuWeEd8/YC2x41ZKVFI/AAAAAAAAQFc/fKV3tQUcTn47sInNKfJsEMddbUOsZogYACLcBGAsYHQ/s0/image2.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img id="flexImg" alt="race car photo in JPEG (20.7kB)" border="0" data-original-height="1080" data-original-width="1920" src="https://1.bp.blogspot.com/-ZuSZwuWeEd8/YC2x41ZKVFI/AAAAAAAAQFc/fKV3tQUcTn47sInNKfJsEMddbUOsZogYACLcBGAsYHQ/s0/image2.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/div&gt; &lt;p id="imgCaption"&gt; Credit: &lt;a href="https://jakearchibald.com/2020/avif-has-landed/demos/compare/?show=f1&amp;img=/c/f1-match-ff75e344.jpg"&gt;Image comparison&lt;/a&gt; from &lt;a href="https://jakearchibald.com/2020/avif-has-landed/"&gt;AVIF has landed&lt;/a&gt; by Jake Archibald &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Foreground service optimizations&lt;/strong&gt; - Foreground services are an important way for apps to manage certain types of user-facing tasks, but when overused they can affect performance and even lead to app kills. To ensure a better experience for users, we will be blocking foreground service starts from the background for apps that are targeting the new platform. To make it easier to transition away from this pattern, we’re introducing a new &lt;a href="https://developer.android.com/reference/android/app/job/JobParameters.html#isExpeditedJob()"&gt;expedited job&lt;/a&gt; in JobScheduler that gets elevated process priority, network access, and runs immediately regardless of power constraints like Battery Saver or Doze. For back-compatibility, we’ve also built expedited jobs into the latest release of &lt;a href="https://developer.android.com/topic/libraries/architecture/workmanager"&gt;Jetpack WorkManager library&lt;/a&gt;. Also, to reduce distraction for users, we’re now delaying the display of some foreground service notifications by up to 10 seconds. This gives short-lived tasks a chance to complete before their notifications are shown. &lt;a href="https://developer.android.com/about/versions/12/behavior-changes-12#foreground-service-launch-restrictions"&gt;More here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Rich content insertion &lt;/strong&gt;- Users love images, videos and other expressive content, but inserting and moving this content in apps is not always easy. To make it simple for your apps to receive rich content, we’re introducing a new unified API that lets you accept content from any source: clipboard, keyboard, or drag and drop. You can attach a new interface, &lt;a href="https://developer.android.com/reference/android/view/OnReceiveContentListener"&gt;OnReceiveContentListener&lt;/a&gt;, to UI components and get a callback when content is inserted through any mechanism. This callback becomes the single place for your code to handle insertion of all content, from plain and styled text to markup, images, videos, audio files, and more. For back-compatibility, we’ve added the unified API to &lt;a href="https://developer.android.com/reference/androidx/core/view/OnReceiveContentListener"&gt;AndroidX&lt;/a&gt;. &lt;a href="https://developer.android.com/about/versions/12/features/unified-content-api"&gt;More here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Audio-coupled haptic effect&lt;/strong&gt; - In Android 12 apps can provide audio-coupled haptic feedback through the phone's vibrator. The vibration strength and frequency are derived from an audio session, allowing you to create more immersive game and audio experiences. For example, a video calling app could use custom ringtones to identify the caller through haptic feedback, or you could simulate rough terrain in a racing game. &lt;a href="https://developer.android.com/reference/android/media/audiofx/HapticGenerator"&gt;More here&lt;/a&gt;. &lt;/p&gt; &lt;!-- &lt;p&gt; &lt;strong&gt;Multi-channel audio&lt;/strong&gt; - Android 12 includes several enhancements for audio with spatial information. It adds support for MPEG-H playback in passthrough and offload mode, and the audio mixers, resamplers and effects have been optimized for up to 24 channels (the previous maximum was 8). &lt;/p&gt; &lt;p&gt; --&gt; &lt;strong&gt;Immersive mode API improvements for gesture nav &lt;/strong&gt;- We’ve simplified immersive mode so that gesture navigation is easier and more consistent, for example when watching a video, reading a book, or playing a game. We’re still &lt;a href="https://developer.android.com/reference/android/view/WindowInsetsController#BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE"&gt;protecting apps from accidental gestures&lt;/a&gt; when in full-screen experiences related to gaming, but in all other full-screen or immersive experiences (e.g. video viewers, reading, photo gallery), for apps targeting the new platform, we’re changing the default to allow users to navigate their phone with one swipe. &lt;a href="https://developer.android.com/about/versions/12/behavior-changes-12#immersive-mode-improvements"&gt;More here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Notification UI updates &lt;/strong&gt;- We’re refreshing notification designs to make them more modern, easier to use, and more functional. In this first preview you’ll notice changes from the drawer and controls to the templates themselves. We’re also optimizing transitions and animations across the system to make them more smooth. As part of the updates, for apps targeting Android 12 we’re decorating notifications with custom content with icon and expand affordances to match all other notifications. &lt;a href="http://developer.android.com/about/versions/12/behavior-changes-12#custom-notifications"&gt;More here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Faster, more responsive notifications&lt;/strong&gt; - When users tap a notification, they expect to jump immediately into the app - the faster the better. To meet that expectation, developers should make sure that notification taps trigger Activity starts directly, rather than using “trampolines” - an intermediary broadcast receiver or service - to start the Activity. Notification trampolines can cause significant delays and affect the user experience. To keep notifications responsive, Android 12 will block notification trampolines by preventing them from launching their target Activities, and we’re asking developers to migrate away from this pattern. The change applies only to apps targeting the new platform, but for all apps we’ll display a toast to make trampolines visible to you and to users. &lt;a href="https://developer.android.com/about/versions/12/behavior-changes-12#notification-trampolines"&gt;More here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Improved Binder IPC calls &lt;/strong&gt; - As part of our work on performance, we’ve put a focus on reducing system variability. We’ve taken a look at latency and workload distribution, and made optimizations that reduce the median experience from the tail end, or 99% percentile use case. In doing so, we’ve targeted improvements to system binder calls adding lightweight caching strategies and focusing on removing lock contention to improve latency distribution. This has yielded roughly a 2x performance increase on Binder calls overall, with significant improvements in specific calls, for example a 47x improvement in &lt;code&gt;refContentProvider()&lt;/code&gt;, 15x in &lt;code&gt;releaseWakeLock()&lt;/code&gt;, and 7.9x in &lt;code&gt;JobScheduler.schedule()&lt;/code&gt;. &lt;/p&gt; &lt;h2&gt;&lt;strong&gt;App compatibility&lt;/strong&gt;&lt;/h2&gt; &lt;p&gt; We’re working to make updates faster and smoother by prioritizing app compatibility as we roll out new platform versions. In Android 12 we’ve made most app-facing changes opt-in to give you more time, and we’ve updated our tools and processes to help you get ready sooner. We’ve also added new functionality to Google Play system updates to give your apps a better environment on Android 12 devices. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;More of Android updated through Google Play &lt;/strong&gt;- We’re continuing to expand our investment in &lt;a href="https://android-developers.googleblog.com/2019/05/fresher-os-with-projects-treble-and-mainline.html"&gt;Google Play system updates&lt;/a&gt; (Project Mainline) to give apps a more consistent, secure environment across devices. In Android 12 we’ve added the Android Runtime (ART) module that lets us push updates to the core runtime and libraries on devices running Android 12. We can improve runtime performance and correctness, manage memory more efficiently, and make Kotlin operations faster - all without requiring a full system update. We’ve also expanded the functionality of existing modules - for example, we’re delivering our compatible media transcoding feature inside an updatable module. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Optimizing for tablets, foldables, and TVs &lt;/strong&gt;- With more people than ever using apps on large-screen devices like foldables, tablets, and TVs, now is a great time to make sure your app or game is ready. Get started by &lt;a href="https://developer.android.com/docs/quality-guidelines/tablet-app-quality"&gt;optimizing for tablets&lt;/a&gt; and &lt;a href="https://developer.android.com/guide/topics/ui/foldables"&gt;building apps for foldables&lt;/a&gt;. And, for the biggest screen in the home, the first Android 12 preview for Android TV is also available. In addition to bringing the latest Android features to the TV with this preview, you will also be able to test your apps on the all-new Google TV experience. Learn more on the &lt;a href="https://developer.android.com/tv"&gt;Android TV Developers&lt;/a&gt; site and get started with your &lt;a href="https://store.askey.com/adt-3.html"&gt;ADT-3 developer kit&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Updated lists of non-SDK interfaces&lt;/strong&gt; - We’ve restricted additional &lt;a href="https://developer.android.com/about/versions/12/non-sdk-12"&gt;non-SDK interfaces&lt;/a&gt;, and as always your feedback and &lt;a href="https://developer.android.com/guide/app-compatibility/restrictions-non-sdk-interfaces#feature-request"&gt;requests for public API equivalents&lt;/a&gt; are welcome. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Easier testing and debugging of changes&lt;/strong&gt; - To make it easier for you to test the opt-in changes that can affect your app, we’ve made many of them toggleable. WIth the toggles you can force-enable or disable the changes individually from Developer options or adb. &lt;a href="https://developer.android.com/about/versions/12/reference/compat-framework-changes"&gt;Check out the details here&lt;/a&gt;. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-OzooBPAi3i8/YC3BPS09IfI/AAAAAAAAQFs/Q2Afirbk_1cJut0YFYHqlsdpGmMv5YFhACLcBGAsYHQ/s0/image5.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img id="imgHalf" alt="mobile display of App Compatibility Changes with toggles" border="0" data-original-height="1999" data-original-width="1503" src="https://1.bp.blogspot.com/-OzooBPAi3i8/YC3BPS09IfI/AAAAAAAAQFs/Q2Afirbk_1cJut0YFYHqlsdpGmMv5YFhACLcBGAsYHQ/s0/image5.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p id="imgCaption"&gt; &lt;em&gt;App compatibility toggles in Developer Options.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Platform stability milestone&lt;/strong&gt; - Like last year, we’re letting you know our Platform Stability milestone well in advance, to give you more time to plan for app compatibility work. At this milestone we’ll deliver not only final SDK/NDK APIs, but also final internal APIs and app-facing system behaviors. We’re expecting to reach Platform Stability by August 2021, and you’ll have several weeks before the official release to do your final testing. The release timeline details are &lt;a href="https://developer.android.com/about/versions/12/overview"&gt;here&lt;/a&gt;. &lt;/p&gt; &lt;h1&gt;Get started with Android 12&lt;/h1&gt; &lt;p&gt; The Developer Preview has everything you need to try the Android 12 features, test your apps, and give us &lt;a href="https://developer.android.com/about/versions/12/feedback"&gt;feedback&lt;/a&gt;. You can get started today by &lt;a href="https://developer.android.com/about/versions/12/download"&gt;flashing a device system image&lt;/a&gt; to a &lt;strong&gt;Pixel 3 / 3 XL&lt;/strong&gt;, &lt;strong&gt;Pixel 3a / 3a XL&lt;/strong&gt;, &lt;strong&gt;Pixel 4 / 4 XL&lt;/strong&gt;, &lt;strong&gt;Pixel 4a / 4a 5G&lt;/strong&gt;, or &lt;strong&gt;Pixel 5&lt;/strong&gt; device. If you don’t have a Pixel device, you can use the 64-bit system images with the Android Emulator in Android Studio. &lt;/p&gt; &lt;p&gt; When you’re &lt;a href="https://developer.android.com/about/versions/12/setup-sdk"&gt;set up&lt;/a&gt;, here are some of the things you should do: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Try the new features and APIs&lt;/strong&gt; - your feedback is critical during the early part of the developer preview. Report issues in our tracker or give us direct feedback by survey for selected features from the &lt;a href="https://developer.android.com/about/versions/12/feedback"&gt;feedback and requests&lt;/a&gt; page. &lt;li&gt;&lt;strong&gt;Test your current app for compatibility&lt;/strong&gt; - the goal here is to learn whether your app is affected by default behavior changes in Android 12. Just install your current published app onto a device or emulator running Android 12 and test. &lt;li&gt;&lt;strong&gt;Test your app with opt-in changes&lt;/strong&gt; - Android 12 has opt-in behavior changes that only affect your app when it’s targeting the new platform. It’s extremely important to understand and assess these changes early. To make it easier to test, you can &lt;a href="https://developer.android.com/about/versions/12/reference/compat-framework-changes"&gt;toggle the changes on and off individually&lt;/a&gt;. &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; We’ll update the preview system images and SDK regularly throughout the Android 12 release cycle. This initial preview release is &lt;strong&gt;for developers only&lt;/strong&gt; and not intended for daily or consumer use, so we're making it available by &lt;strong&gt;manual download only&lt;/strong&gt;. You can flash a factory image to your Pixel device, or you can sideload an OTA image to a Pixel device running Android 11, in which case you won’t need to unlock your bootloader or wipe data. Either way, once you’ve manually installed a preview build, you’ll automatically get future updates over-the-air for all later previews and Betas. &lt;a href="https://developer.android.com/about/versions/12/get"&gt;More here&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; As we get closer to a final product, we'll be inviting consumers to try it out as well, and we'll open up enrollments through Android Beta at that time. Stay tuned for details, but for now please note that &lt;strong&gt;Android Beta is not currently available for Android 12&lt;/strong&gt;. &lt;/p&gt; &lt;p&gt; For complete information, &lt;a href="https://developer.android.com/about/versions/12"&gt;visit the Android 12 developer site&lt;/a&gt;. &lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=W5Dy7eBfh0Q:_RZ6GTLDP4E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=W5Dy7eBfh0Q:_RZ6GTLDP4E:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=W5Dy7eBfh0Q:_RZ6GTLDP4E:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/W5Dy7eBfh0Q" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-eRnBIDn-ZZE/YC6eGA2hC5I/AAAAAAAAQGY/bea6RxVXWcs9q5FoLEZtjuTnLZvegzY2ACLcBGAsYHQ/s72-c/Android%2B12_logo.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/02/android-12-dp1.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-2528352084005991251
   </id>
   <published>
    2021-02-11T09:23:00.001-08:00
   </published>
   <updated>
    2021-02-17T12:41:01.941-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="Android" />
   <category scheme="http://www.blogger.com/atom/ns#" term="android security" />
   <category scheme="http://www.blogger.com/atom/ns#" term="App quality" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Google Play" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Google Play Store" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Privacy" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Requirements" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Security" />
   <title type="text">Quality to match with your user’s expectations</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-JIgrmrC09KI/YCVmfeDzHzI/AAAAAAAAQEc/01TyuWwB-NoLzm5wIqDYEyyNKSXCxBeewCLcBGAsYHQ/s0/app%2Bquality.001.png "&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-JIgrmrC09KI/YCVmfeDzHzI/AAAAAAAAQEc/01TyuWwB-NoLzm5wIqDYEyyNKSXCxBeewCLcBGAsYHQ/s0/app%2Bquality.001.png"&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/hoitab"&gt;Hoi Lam&lt;/a&gt;, Android App Quality &lt;/em&gt;&lt;p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-JIgrmrC09KI/YCVmfeDzHzI/AAAAAAAAQEc/01TyuWwB-NoLzm5wIqDYEyyNKSXCxBeewCLcBGAsYHQ/s0/app%2Bquality.001.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="" border="0" data-original-height="960" data-original-width="1920" src="https://1.bp.blogspot.com/-JIgrmrC09KI/YCVmfeDzHzI/AAAAAAAAQEc/01TyuWwB-NoLzm5wIqDYEyyNKSXCxBeewCLcBGAsYHQ/s0/app%2Bquality.001.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p&gt; Since the launch of Android more than 10 years ago, the platform and the user’s expectations have grown. There are improvements from user experience through &lt;a href="https://material.io/design"&gt;material design&lt;/a&gt; to the &lt;a href="https://developer.android.com/privacy"&gt;importance and advancement in privacy&lt;/a&gt;. We know you want your apps to offer a great user experience. At the same time, we also know that it’s not always straightforward to know which area to tackle first. That’s why we are launching a &lt;a href="https://developer.android.com/quality"&gt;new App Quality section&lt;/a&gt; in our developer site to help you keep up-to-date with key aspects of app quality and provide related resources. &lt;/p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/QxyvS1oZOUs" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt; &lt;p&gt; In the first release, we have updated &lt;a href="https://developer.android.com/docs/quality-guidelines/core-app-quality"&gt;the Core App Quality checklist&lt;/a&gt; to take into account recent Android releases as well as the current trends of the app ecosystem. Here are some highlights in this update: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Visual Experience&lt;/strong&gt; - We highlight the best practice of using &lt;a href="https://material.io/components"&gt;Material Design Components&lt;/a&gt; in place of platform components such as buttons. This will give your app a modern look as well as making features such as &lt;a href="https://developer.android.com/guide/topics/ui/look-and-feel/darktheme"&gt;dark theme&lt;/a&gt; easy to implement. In addition to advice on back stack, we have expanded it to preserving the state of the app. This is becoming more important as edge-to-edge screens and gesture navigation are becoming commonplace, even in entry level phones. &lt;li&gt;&lt;strong&gt;Functionality&lt;/strong&gt; - There are three areas where we have updated our guidance. For media applications, we have updated our recommendations around the playback experience as well as support for HEVC video compression for video encoding. For sharing between apps, we highlight the importance of using the &lt;a href="https://developer.android.com/training/sharing/send"&gt;Android Sharesheet&lt;/a&gt;. This will be critical going forward as apps will &lt;a href="https://developer.android.com/training/basics/intents/package-visibility-use-cases"&gt;have limited visibility to other installed apps&lt;/a&gt; in API level 30 by default. Lastly, we expanded our recommendations around &lt;a href="https://developer.android.com/about/versions/oreo/background#services"&gt;background services&lt;/a&gt;. Helping users to conserve battery is a priority for Android, and we will continue to share updates on this topic. &lt;li&gt;&lt;strong&gt;Performance &amp; Stability&lt;/strong&gt; - We have added tooling now available such as &lt;a href="https://developer.android.com/topic/performance/vitals"&gt;Android vitals&lt;/a&gt; in the Google Play Console. One important point to highlight here is Application Not Responding (ANR). ANRs are caused by threading issues and are something developers can fixed. &lt;a href="https://developer.android.com/topic/performance/vitals/anr"&gt;The ANR troubleshooting guide&lt;/a&gt; can help you diagnose and resolve any ANRs that exist in the app. &lt;li&gt;&lt;strong&gt;Privacy &amp; Security&lt;/strong&gt; - We have summarized our latest recommendations to take into account the latest safeguards from runtime permission to securely using WebView. We have also expanded to include privacy norms that users come to expect from protecting private data to not using any non-resettable hardware Ids. &lt;li&gt;&lt;strong&gt;Google Play&lt;/strong&gt; - In this section, we highlight some of the most important policies for developers and link you to more information on the guidelines. &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; Going forward, we aim to update this list on a quarterly basis to make sure this is up-to-date. In addition, we will be updating the quality checklists for other form factors. &lt;/p&gt; &lt;p&gt; We are working on additional tools and best practices to make it easier for you to build quality applications on Android. We can’t wait to introduce these new improvements to you. Stay tuned! &lt;/p&gt; &lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=PSUcLn3UO6M:R-TFA5KesNg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=PSUcLn3UO6M:R-TFA5KesNg:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=PSUcLn3UO6M:R-TFA5KesNg:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/PSUcLn3UO6M" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-JIgrmrC09KI/YCVmfeDzHzI/AAAAAAAAQEc/01TyuWwB-NoLzm5wIqDYEyyNKSXCxBeewCLcBGAsYHQ/s72-c/app%2Bquality.001.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/02/quality-to-match-with-your-users.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-4423388160984093214
   </id>
   <published>
    2021-02-10T09:00:00.001-08:00
   </published>
   <updated>
    2021-02-17T12:40:38.889-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <title type="text">Announcing Kotlin Symbol Processing (KSP) Alpha</title>
   <content type="html">
    &lt;meta name="twitter:image" content=" https://1.bp.blogspot.com/-tl-oC11ymb0/YCLDMYK4v_I/AAAAAAAAQEM/C_qeIE53MZQTtRITP66rN83kwRIl_uEygCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252834%2529.png "&gt; &lt;img style="display:none" src=" https://1.bp.blogspot.com/-tl-oC11ymb0/YCLDMYK4v_I/AAAAAAAAQEM/C_qeIE53MZQTtRITP66rN83kwRIl_uEygCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252834%2529.png "&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="about:invalid#zSoyz"&gt;Ting-Yuan Huang&lt;/a&gt;‎, Software Engineer and &lt;a href="https://twitter.com/davidjwiner?lang=en"&gt;David Winer&lt;/a&gt;, Product Manager &lt;/em&gt;&lt;p&gt; &lt;center&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-tl-oC11ymb0/YCLDMYK4v_I/AAAAAAAAQEM/C_qeIE53MZQTtRITP66rN83kwRIl_uEygCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252834%2529.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Android image" border="0" data-original-height="512" data-original-width="1024" src="https://1.bp.blogspot.com/-tl-oC11ymb0/YCLDMYK4v_I/AAAAAAAAQEM/C_qeIE53MZQTtRITP66rN83kwRIl_uEygCLcBGAsYHQ/s0/pasted%2Bimage%2B0%2B%252834%2529.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;/center&gt; &lt;p&gt; Today we are excited to announce the alpha of &lt;strong&gt;Kotlin Symbol Processing &lt;/strong&gt;(KSP), an all-new tool for building lightweight compiler plugins in Kotlin. KSP offers similar functionality to &lt;a href="https://kotlinlang.org/docs/reference/kapt.html"&gt;KAPT&lt;/a&gt;, however it’s up to 2x faster, offers direct access to Kotlin compiler features, and is being developed with multiplatform compatibility in mind. &lt;/p&gt; &lt;p&gt; KSP is compatible with the Kotlin 1.4.30 release and onwards. You can check out the open source code and documentation in the &lt;a href="http://goo.gle/ksp"&gt;KSP GitHub repository&lt;/a&gt;. &lt;/p&gt; &lt;h2&gt;Why KSP?&lt;/h2&gt; &lt;p&gt; The #1 request we hear from Kotlin developers is to make build speeds faster. Many developers iterate on and deploy apps dozens of times a day, so having to sit around waiting for a slow build can be very time consuming. One of the biggest challenges with compiling Kotlin code is that Kotlin doesn’t have a native annotation processing system. Annotation processors like &lt;a href="http://d.android.com/room"&gt;Room&lt;/a&gt; are ubiquitous on Android and rely on Java annotation processing compatibility through the Kotlin Annotation Processing Tool (KAPT). KAPT can be slow to run, though, since it requires generating intermediate Java stubs that can then be ingested by the Java annotation processing system. &lt;/p&gt; &lt;p&gt; When designing KSP, we thought about what annotation processing would look like for Kotlin if we built it from the ground up. KSP offers a powerful and yet simple API for parsing Kotlin code directly, dramatically reducing the build speed tax imposed by KAPT’s stub generation. Indeed, initial benchmarks with the Room library show that KSP is approximately 2x faster than KAPT. &lt;/p&gt; &lt;h2&gt;Getting started&lt;/h2&gt; &lt;p&gt; To see what KSP looks like in action, download the &lt;a href="https://github.com/google/ksp/releases/download/1.4.30-1.0.0-alpha02/playground.zip"&gt;KSP playground project&lt;/a&gt; from GitHub. In it you’ll find: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Library: &lt;/strong&gt;A toy &lt;code&gt;test-processor&lt;/code&gt; library that implements the builder pattern as a KSP processor &lt;li&gt;&lt;strong&gt;Consuming project: &lt;/strong&gt;A &lt;code&gt;workload&lt;/code&gt; directory that shows how to use the builder processor in a real-world Kotlin project &lt;/li&gt; &lt;/ul&gt; &lt;p&gt; All of the logic for implementing the builder is in &lt;code&gt;test-processor&lt;/code&gt; — for the consumer (&lt;code&gt;workload&lt;/code&gt;), the only difference between using KAPT and KSP is a two-line build file change: &lt;/p&gt; &lt;center&gt; &lt;a href="https://1.bp.blogspot.com/-WSEWZfQjV0w/YCLCf32fz4I/AAAAAAAAQEE/jz_02cOCV7kA4OzvSEknvLFDM_GE4x5_ACLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-09%2Bat%2B12.11.52%2BPM.png" imageanchor="1" &gt;&lt;img style="width:100%" id=imgFull border="0" src="https://1.bp.blogspot.com/-WSEWZfQjV0w/YCLCf32fz4I/AAAAAAAAQEE/jz_02cOCV7kA4OzvSEknvLFDM_GE4x5_ACLcBGAsYHQ/s0/Screen%2BShot%2B2021-02-09%2Bat%2B12.11.52%2BPM.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;/center&gt; &lt;p&gt; This is the goal of KSP: most Android app developers don’t need to worry about its internals; other than this one line change, a library that supports KSP looks just like a normal annotation processor, only it’s up to 2x faster. That said, using KAPT and KSP in the same module will likely slow down your build initially, so during this alpha period, it is best to use KSP and KAPT in separate modules. &lt;/p&gt; &lt;p&gt; As more annotation processors adopt KSP, we expect most of your modules to be able to use KSP as a near drop-in replacement for KAPT. For now, you can check out which annotation processors offer KSP support in &lt;a href="https://github.com/google/ksp#supported-libraries"&gt;this table&lt;/a&gt;. If a library that supports or is&nbsp;implementing support for KSP is missing from the table, please submit a pull request with your suggestion! &lt;/p&gt; &lt;p&gt; If you are an author of a library that currently uses annotation processing, you can find more information on how to make your library compatible with KSP in the &lt;a href="https://github.com/google/ksp/blob/master/docs/quickstart.md"&gt;quickstart&lt;/a&gt; and &lt;a href="https://github.com/google/ksp#how-ksp-looks-at-source-files"&gt;README&lt;/a&gt; guides. &lt;/p&gt; &lt;p&gt; For library authors, now that KSP is in alpha, it’s a great time to start looking closely at it and giving us feedback on the API in the &lt;a href="https://github.com/google/ksp/issues"&gt;KSP issue tracker&lt;/a&gt;. In addition, we regularly post release updates in the #ksp channel on &lt;a href="https://surveys.jetbrains.com/s3/kotlin-slack-sign-up?_ga=2.48535333.2098599687.1609969960-1527966202.1605648568&amp;_gac=1.146918085.1607395508.CjwKCAiAwrf-BRA9EiwAUWwKXktnCOQy3WhM7Xq-xLGrdg9gTJK3LnofgXHZtq2PsbzL8O5j1uSw2hoC33wQAvD_BwE"&gt;Kotlin Slack&lt;/a&gt;. Since the developer preview last June, we’ve closed over 100 bugs and issues, dozens of which have been reported by the amazing community of Kotlin library developers. &lt;/p&gt; &lt;p&gt; &lt;em&gt;Java is a registered trademark of Oracle and/or its affiliates.&lt;/em&gt; &lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=_bhFw3V6MgI:6wO-dZ61gu8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=_bhFw3V6MgI:6wO-dZ61gu8:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=_bhFw3V6MgI:6wO-dZ61gu8:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/_bhFw3V6MgI" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-tl-oC11ymb0/YCLDMYK4v_I/AAAAAAAAQEM/C_qeIE53MZQTtRITP66rN83kwRIl_uEygCLcBGAsYHQ/s72-c/pasted%2Bimage%2B0%2B%252834%2529.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/02/announcing-kotlin-symbol-processing-ksp.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-50681712981098961
   </id>
   <published>
    2021-02-09T09:17:00.002-08:00
   </published>
   <updated>
    2021-02-17T12:40:12.175-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="#EdTech" />
   <category scheme="http://www.blogger.com/atom/ns#" term="#STEM" />
   <category scheme="http://www.blogger.com/atom/ns#" term="#TechEd" />
   <category scheme="http://www.blogger.com/atom/ns#" term="#TechEdu" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Study Jams" />
   <category scheme="http://www.blogger.com/atom/ns#" term="curriculum" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Education" />
   <category scheme="http://www.blogger.com/atom/ns#" term="educator" />
   <category scheme="http://www.blogger.com/atom/ns#" term="faculty" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="instructor" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Kotlin" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <category scheme="http://www.blogger.com/atom/ns#" term="outreach" />
   <category scheme="http://www.blogger.com/atom/ns#" term="schools" />
   <category scheme="http://www.blogger.com/atom/ns#" term="study group" />
   <category scheme="http://www.blogger.com/atom/ns#" term="teach" />
   <category scheme="http://www.blogger.com/atom/ns#" term="university" />
   <title type="text"> New curriculum for educators to teach Android app development</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-b6bxqJmHSBQ/YCF7iAb1e8I/AAAAAAAAQD4/bjVGymoEwg4HKkjQI04cj9LyYnHS4LhdQCLcBGAsYHQ/s0/new-curriculum-for-android-educators-social-v4.png"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-b6bxqJmHSBQ/YCF7iAb1e8I/AAAAAAAAQD4/bjVGymoEwg4HKkjQI04cj9LyYnHS4LhdQCLcBGAsYHQ/s0/new-curriculum-for-android-educators-social-v4.png"&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/katherine_kuan"&gt;Kat Kuan&lt;/a&gt;, Developer Advocate, Android&lt;/em&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-b6bxqJmHSBQ/YCF7iAb1e8I/AAAAAAAAQD4/bjVGymoEwg4HKkjQI04cj9LyYnHS4LhdQCLcBGAsYHQ/s0/new-curriculum-for-android-educators-social-v4.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="" border="0" data-original-height="1025" data-original-width="2048" src="https://1.bp.blogspot.com/-b6bxqJmHSBQ/YCF7iAb1e8I/AAAAAAAAQD4/bjVGymoEwg4HKkjQI04cj9LyYnHS4LhdQCLcBGAsYHQ/s0/new-curriculum-for-android-educators-social-v4.png"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt; We strive to make Android development content accessible to all, so that anyone can become an Android developer. Over the years, millions of students at all different levels have consumed our learning content and worked through courses and codelabs to advance their skills. We continue to update and release new content as the ever-changing industry continues to evolve. &lt;/p&gt; &lt;p&gt; As demand for skilled Android developers increases in the job marketplace, there is an even greater need for educators to train the next generation of Android developers. That is why we created these resources to help support and empower educators. &lt;/p&gt; &lt;p&gt; &lt;strong&gt;New Android Development with Kotlin instructor-led curriculum&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; Today we’re announcing the launch of our new instructor-led curriculum for&lt;a href="http://d.android.com/teach"&gt; Android Development with Kotlin&lt;/a&gt;. This is for classroom learning (virtual or in-person) with an instructor delivering lectures on important Android concepts, and students receiving hands-on practice through codelabs. The official course materials are now available and can be freely modified by instructors to adapt to their students’ needs. &lt;/p&gt; &lt;p&gt; This is a major update to the curriculum we released in 2018. The updates account for the most recent changes in the Android platform, from the release of the &lt;a href="http://d.android.com/jetpack"&gt;Android Jetpack libraries&lt;/a&gt; to Android development becoming Kotlin-first. The &lt;a href="https://developer.android.com/kotlin"&gt;Kotlin programming language&lt;/a&gt; helps developers become more productive with more concise syntax and improved code safety. Over 60% of professional Android developers already use Kotlin, and it’s Google’s recommended programming language for new developers building Android apps. While instructors do not need Android or Kotlin experience to teach the curriculum, prior programming experience is recommended. &lt;/p&gt; &lt;p&gt; We’ve partnered with universities and skilling partners in India such as Shivaji University, I. K. Gujral Punjab Technical University, Chandigarh University, Ganpat University, Telangana Academy for Skill and Knowledge (TASK), and Information and Communication Technology Academy of Kerala, who will be some of the first to offer this curriculum to their students in the Spring, with more universities to follow in the Fall and coming semesters. With the curriculum now available publicly, educators are welcome to start teaching Android development. &lt;/p&gt; &lt;p&gt; &lt;em&gt;“As it’s mostly a hands-on course, students learn implementations which helps them in their placements in Mobile app companies.” -Dr. Kavita S. Oza, Shivaji University&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;Android Study Jams content now available for all developers&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; Outside a formal classroom, learning in a peer group has also been shown as an effective way to learn Android. That is why we’re also making the&lt;a href="http://d.android.com/teach#for-facilitators-leading-a-community-group"&gt; Android Study Jams program&lt;/a&gt; available to all developers today. Android Study Jams enables a group of people to come together and learn Android development through hands-on codelabs in an online curriculum. An instructor is not needed to deliver lectures, but it is recommended to have a facilitator to organize the group meetings. No programming experience is needed to get started. Over 38,000 students in Google Developer Student Clubs around the globe have already participated in this program. &lt;/p&gt; &lt;p&gt; &lt;em&gt;“Introducing people to Kotlin and being by their side at this first step which could touch their lives created great happiness and excitement for us.” - Ceren Tunay and Serkan Alc, Developer Student Club Turkey&lt;/em&gt; &lt;/p&gt; &lt;p&gt; With many paths to learning, it is always interesting to see the different journeys of students who become Android developers, and exciting to see the resulting personal success, innovative apps, and entrepreneurial pursuits they have. The following video highlights two developers and how learning Android development has shaped their careers. &lt;/p&gt; &lt;center&gt;&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/DZ-rEgAWFkQ" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;/center&gt; &lt;p&gt; For more details on these new offerings, check out the &lt;a href="http://d.android.com/teach"&gt;Android Development Resources for Educators&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; For independent learners, we also offer &lt;a href="https://developer.android.com/kotlin/campaign/learn"&gt;self-paced learning content&lt;/a&gt;, &lt;a href="https://www.udacity.com/courses/all?skill=Android&amp;amp;skill=Android+Development"&gt;Udacity courses and Nanodegrees&lt;/a&gt;, &lt;a href="https://www.youtube.com/user/androiddevelopers"&gt;YouTube videos&lt;/a&gt;, and more resources on &lt;a href="https://developer.android.com/guide"&gt;developer.android.com&lt;/a&gt;. Keep us posted on how your learning journey goes! &lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=Wcaa-EHcN1A:ZhH0OndyKsg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=Wcaa-EHcN1A:ZhH0OndyKsg:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=Wcaa-EHcN1A:ZhH0OndyKsg:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/Wcaa-EHcN1A" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-b6bxqJmHSBQ/YCF7iAb1e8I/AAAAAAAAQD4/bjVGymoEwg4HKkjQI04cj9LyYnHS4LhdQCLcBGAsYHQ/s72-c/new-curriculum-for-android-educators-social-v4.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/02/new-curriculum-for-educators-to-teach-android-app-development.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-6644008520587133703
   </id>
   <published>
    2021-01-30T10:19:00.001-08:00
   </published>
   <updated>
    2021-02-17T12:39:46.763-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="#AndroidDevJourney" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Developer Story" />
   <category scheme="http://www.blogger.com/atom/ns#" term="career inspiration" />
   <category scheme="http://www.blogger.com/atom/ns#" term="careers in tech" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Dev Story" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Developer Inspiration" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Developer Journey" />
   <category scheme="http://www.blogger.com/atom/ns#" term="developer stories" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <title type="text">#AndroidDevJourney spotlight - January edition</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-g56XW9w6ZM8/YBSZfpoEdDI/AAAAAAAAQC8/hLw50QUPW-YPWUTjD0tU8zZlSuSC5he2gCLcBGAsYHQ/s0/ADJ_Twitter_Jan_Wrapup.jpg"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-g56XW9w6ZM8/YBSZfpoEdDI/AAAAAAAAQC8/hLw50QUPW-YPWUTjD0tU8zZlSuSC5he2gCLcBGAsYHQ/s0/ADJ_Twitter_Jan_Wrapup.jpg"&gt; &lt;p&gt; &lt;em&gt;Posted by &lt;a href="https://twitter.com/LuliPerkins"&gt;Luli Perkins&lt;/a&gt;, Developer Relations Program Manager &lt;/em&gt; &lt;/p&gt;&lt;br/&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-8ovUAQdPOG8/YBSJkS0x93I/AAAAAAAAQCw/LV9Uos1w5AYwtqAK-CdZBNp76QtdNJFhwCLcBGAsYHQ/s0/ADJ_WrapUp_Blog_Jan.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Header image with text saying Android Dev Journey" border="0" data-original-height="969" data-original-width="3244" src="https://1.bp.blogspot.com/-8ovUAQdPOG8/YBSJkS0x93I/AAAAAAAAQCw/LV9Uos1w5AYwtqAK-CdZBNp76QtdNJFhwCLcBGAsYHQ/s0/ADJ_WrapUp_Blog_Jan.jpg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;We kicked off the #AndroidDevJourney to give members of our community the opportunity to share their stories through our social platforms. Each Saturday from January through June we’ll feature a new developer on &lt;a href="https://twitter.com/AndroidDev"&gt;our Twitter account&lt;/a&gt;. We have received an overwhelming number of inspirational stories and hope you enjoy reading through the ones we’ve selected below. &lt;/p&gt; &lt;p&gt; For a chance to be featured in our February spotlight series, tweet us your story using #AndroidDevJourney. &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-x_gyRQ5wQ4E/YBRxzJ8i6oI/AAAAAAAAQBc/RvdLteCWg4E6p7DA7mdgPJnGhJfL0RUKwCLcBGAsYHQ/s0/image%2B2.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Head shot of Niharika Arora" border="0" data-original-height="675" data-original-width="1200" src="https://1.bp.blogspot.com/-x_gyRQ5wQ4E/YBRxzJ8i6oI/AAAAAAAAQBc/RvdLteCWg4E6p7DA7mdgPJnGhJfL0RUKwCLcBGAsYHQ/s0/image%2B2.jpg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h2&gt;Niharika Arora&lt;/h2&gt; &lt;p&gt; &lt;strong&gt;Tell me about your journey in becoming an Android Developer and how you got started.&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;My journey started in the field of Android when I was in my 4th year of undergrad studies. I got an internship in a startup named GreenAppleSolutions. There I got a chance to work on an Android project from scratch and luckily my first project went live on the Play Store. During this whole internship, I found Android so interesting because everything you code, you can see the results live in front of you on your device. I started loving Android and decided to take Android as my career path.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;What’s one shortcut, tip, or hack you can’t live without?&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;I am a big fan of Android Lint, which has saved me many times from manually finding deprecated calls/APIs. It has also helped me in following the best practices and making my code more optimized, secure, and highly performant. &lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;What's the one piece of advice you wish someone would have given you when you started on your journey?&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;Actually, there are two, &lt;/em&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;Clearing a small doubt is equally as important even if you think that is a stupid one. Ask as many queries as you can till the time you are satisfied with the answer. &lt;/em&gt; &lt;li&gt;&lt;em&gt;Reading tutorials is good, but start exploring the documentations in depth. Initially, it might look too much to start with, but it will build you up to be a good developer in the long run.&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-WOBeqgC2VKw/YBRywbBCgKI/AAAAAAAAQBo/UCdBJV5F4d0gOQHiaSTTRrPj34TE0mOywCLcBGAsYHQ/s0/image%2B3.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Head shot of Walmyr Carvalho" border="0" data-original-height="675" data-original-width="1200" src="https://1.bp.blogspot.com/-WOBeqgC2VKw/YBRywbBCgKI/AAAAAAAAQBo/UCdBJV5F4d0gOQHiaSTTRrPj34TE0mOywCLcBGAsYHQ/s0/image%2B3.jpg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h2&gt;Walmyr Carvalho&lt;/h2&gt; &lt;p&gt; &lt;strong&gt;Tell me about your journey in becoming an Android Developer and how you got started.&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;&lt;em&gt;Funny thing! I started working with mobile on iOS, in 2010, but then in 2011 my college final project was an app for civil construction and nobody on the team had a Mac, so we did it for Android (We got a 10, btw!)! At that time I was teaching technology to some government people and wasn’t into coding that much, but then after project in 2011 I got my first job as Junior Android Developer and it got me so hooked on the platform that I couldn’t leave!&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;I was able to work with Java on Eclipse + ADT, Holo, ActionBarSherlock, the beginnings of Material Design and was attending Google I/O ’13 when Google announced Android Studio, which was a very humbling but insightful experience to me, not only because of the learning but also the people I met that helped me a lot as well!&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Since then, I’ve been working with mobile and, mostly, with Android for more than 10 years now, helping a lot of Brazilian tech companies and unicorns with their Android projects and since 2016 I’m one of the &lt;a href="https://developers.google.com/programs/experts/directory/"&gt;Google Developer Experts&lt;/a&gt; for Android around here.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Also, I love development and design communities, so I try to be involved with that as much as I can. I’m a former organizer of &lt;a href="http://meetup.com/gdg-sp"&gt;GDG São Paulo&lt;/a&gt; and the creator and organizer of &lt;a href="http://meetup.com/kotlin-meetup-sp"&gt;Kotlin Meetup São Paulo&lt;/a&gt; and &lt;a href="http://androiddevbr.org/"&gt;Android Dev BR&lt;/a&gt; - the biggest brazilian/lusophone Android community in the world, with more than 7.500 members! &lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Lastly, I’m also involved with the national startup community, as a mentor for &lt;a href="https://acestartups.com.br/startups/"&gt;ACE Startups&lt;/a&gt; and &lt;a href="https://www.campus.co/google-for-startups-accelerator-global/"&gt;Google For Startups Accelerator&lt;/a&gt; programs in Brazil. &lt;/em&gt;&lt;/p&gt; &lt;p&gt; &lt;strong&gt;What’s one Android development shortcut, tip, or hack you can’t live without?&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;&lt;em&gt; There’s a simple but powerful shortcut on Android Studio that I use a lot, which is the multi-cursor occurrence selection, which can be achieved using Ctrl + G (macOS) / Alt + J (Windows + Linux) for incremental occurrences selection and/or Ctrl + Cmd + G / Shift + Ctrl + Alt + J to select all occurrences once. Seems silly, but this shortcut helps me so much to get going on my code, especially when it comes to refactoring. I use it everyday! &lt;/em&gt;&lt;/p&gt; &lt;p&gt; &lt;strong&gt;What's the one piece of advice you wish someone would have given you when you started on your journey?&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;p&gt;&lt;em&gt;I think I would resume my advice in two words: learn and share. &lt;/em&gt;&lt;p&gt; &lt;p&gt;&lt;em&gt;Learn as much as you can, not only with the amazing content available on official documentation, and from the community, but also learn from your own mistakes through consistent practice. There’s a lot of content available for free on the internet, and also both Google and GDEs (Google Developer Experts) like me can get you going, so keep practicing and get your knowledge online!&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;And once you learn, share with other people! If I’m where I am today is because I was able to share what I couldn’t find when I was learning, so please, share your knowledge! The Android community is amazing and super helpful, you can reach literally the creators of the APIs and libraries you use on Twitter, Reddit and many other places. Write an article, record a podcast or a video, there are many formats that you could use.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;The internet is such a powerful tool for learning and sharing and I really recommend you to do that there, and I’m definitely here to help if needed! :)&lt;/em&gt;&lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-lWSEOZ8vXzU/YBR0cyExqDI/AAAAAAAAQB0/aqvS3kp0KiAPcrr2FwQEs00-DArz1A6rQCLcBGAsYHQ/s0/image%2B4.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Head shot of Nate Washington" border="0" data-original-height="675" data-original-width="1200" src="https://1.bp.blogspot.com/-lWSEOZ8vXzU/YBR0cyExqDI/AAAAAAAAQB0/aqvS3kp0KiAPcrr2FwQEs00-DArz1A6rQCLcBGAsYHQ/s0/image%2B4.jpg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h2&gt;Nate Washington&lt;/h2&gt; &lt;p&gt; &lt;strong&gt;&lt;em&gt;Tell me about your journey in becoming an Android Developer and how you got started.&lt;/em&gt;&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;&lt;em&gt;I became an Android developer in 2015, while working on my first business idea. I couldn’t afford to go back to school, so I decided to try my hand at starting a business instead. I launched a web application, but my customers insisted on having a native app for their needs as well. I originally looked for someone with more experience, but ultimately decided to just teach myself how to build an Android app. Fast forward to 2017, and my cofounder Christian and I launched the Android app for our company, &lt;a href="https://qoins.io/"&gt;Qoins&lt;/a&gt;, on the Google Play Store. Since then, we’ve served tens of thousands of Android customers and raised a few rounds of funding.&lt;/em&gt;&lt;/p&gt; &lt;p&gt; &lt;strong&gt;What’s one Android development shortcut, tip, or hack you can’t live without?&lt;em&gt; &lt;/em&gt;&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;Being able to test my Android builds on virtual devices is a lifesaver. There are a lot of different scenarios to account for when building Android apps for thousands of different devices. Tools such as Firebase Test Labs, as well as other virtual device services allow me to create specific scenarios for hands-on testing that I can’t achieve with the physical Android devices that I own.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;What's the one piece of advice you wish someone would have given you when you started on your journey? &lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;Making mistakes is OK; it's all part of the process.&lt;/em&gt; &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-mr5dRXCy_1o/YBR1GIkb1zI/AAAAAAAAQB8/Q5EBHMVSa6UKBv4AbPORoqrgbbx9XgsNQCLcBGAsYHQ/s0/image%2B5.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Headshot of Yuki Anzai" border="0" data-original-height="675" data-original-width="1200" src="https://1.bp.blogspot.com/-mr5dRXCy_1o/YBR1GIkb1zI/AAAAAAAAQB8/Q5EBHMVSa6UKBv4AbPORoqrgbbx9XgsNQCLcBGAsYHQ/s0/image%2B5.jpg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h2&gt;Yuki Anzai&lt;/h2&gt; &lt;p&gt; &lt;strong&gt;Tell me about your journey in becoming an Android Developer and how you got started.&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;My journey began when I got my very first Android device, the HTC Magic, at Google Developer Day 2009. At that time, I was a college student and writing my personal application with JavaFX, so I had experience and familiarity with Java. Then I soon started to port my app to Android. After graduation I worked at a software company and wanted to develop Android apps as my job. But there seemed no opportunity at that company. So I created my own small company that is the agency to develop Android apps.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt; What’s one Android development shortcut, tip, or hack you can’t live without?&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;There are many. If I had to pick one, it would be Android Studio. I always appreciate the awesomeness of Android Studio because I started Android app development with Eclipse. (Also I can't live without Kotlin, RecyclerView, ConstraintLayout ...)&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;The shortcut of Android Studio that I can't live without is Command + B （Declaration or Usages. This allows us to jump between the declaration and usages. It's very useful to read source codes including Android platform and libraries codes.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;What's the one piece of advice you wish someone would have given you when you started on your journey?&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;Read official documents. Read source codes of platform, libraries that you use. One of the ways to accelerate learning is to create an app through first to end (until release to the market).&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;Don't rely on libraries too much especially that affect the whole structure of your app. Your app might live longer than libraries.&lt;/em&gt; &lt;/p&gt; &lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-IpuLc93kvTo/YBR1hmAx43I/AAAAAAAAQCE/K8UQUC6qndEnx8lpURXPztyvrmdDYUKFACLcBGAsYHQ/s0/image%2B6.jpg" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%" alt="Head shot of Madona Syombua" border="0" data-original-height="675" data-original-width="1200" src="https://1.bp.blogspot.com/-IpuLc93kvTo/YBR1hmAx43I/AAAAAAAAQCE/K8UQUC6qndEnx8lpURXPztyvrmdDYUKFACLcBGAsYHQ/s0/image%2B6.jpg"/&gt;&lt;/a&gt;&lt;/div&gt; &lt;h2&gt;Madona Syombua&lt;/h2&gt; &lt;p&gt; &lt;strong&gt;Tell me about your journey in becoming an Android Developer and how you got started.&lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;My Android Journey started back in early 2014; before that, I worked as a junior Java developer for a small firm building inventory systems. However, that did not interest me, and I kept looking for something great to do with my Java knowledge. I bought my first phone, a Nokia, and saw apps in the phone and wondered how they made those apps. I researched and learned that apps were actually written in Java, and that's how my journey began. &lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;I recall building my first application, Simple Math, with only activities since fragments were not there; what an improvement we've had over the years. Simple Math had 500 downloads with a 4.5 rating, and this really motivated me to build more applications. I later won the Grow With Google Scholarship (2018), which boosted my career. During this one-year scholarship, I launched my second application, &lt;a href="https://play.google.com/store/apps/details?id=com.madonasyombua.budgetbuddy&amp;hl=en_US&amp;gl=US"&gt;Budgeting Buddy&lt;/a&gt;, on the Google Play Store and has a 4.5 rating with over five thousand downloads. I currently work for Streem as an Android Engineer, and I indeed love how far Android has come and how the technology and maintenance have improved over the years. Especially the Emulator. &lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;What's one Android development shortcut, tip, or hack you can't live without. &lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;A shortcut I can't live without is [options + Command + L ] and [Options + Command + O]; this really helps me during my pull request process. An amazing hack that I have learned to appreciate is the git local history option, WOW lifesaver. Sometimes you might forget what you had changed, but this hack always saves my life.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;strong&gt;What's the one piece of advice you wish someone would have given you when you started on your journey? &lt;/strong&gt; &lt;/p&gt; &lt;p&gt; &lt;em&gt;Actually, when I transitioned into mobile completely, I felt the learning curve was something I would have to accommodate In my life, which has really helped me a lot. Always staying in front of the game by always learning what is new, what is being recommended, and why it is needed. For instance, having Room was an amazing advancement, now dagger Hilt, and many more. So if I can turn this around and advise new developers, be ready to learn and you will enjoy Android Development.&lt;/em&gt; &lt;/p&gt; &lt;p&gt; &lt;hr&gt; &lt;/p&gt; &lt;p&gt;The Android Developer community prides itself in its inclusivity and welcomes developers from all backgrounds and stages of life. If you’re feeling inspired and want to learn more about how to become a part of our community, here are a few resources to help get you started. &lt;/p&gt; &lt;center&gt;&lt;p&gt; &lt;em&gt;Dive into &lt;a href="https://developer.android.com/"&gt;developer.android.com&lt;/a&gt;&lt;/em&gt; &lt;/p&gt;&lt;/center&gt; &lt;center&gt;&lt;p&gt; &lt;em&gt;Follow us on &lt;a href="https://twitter.com/AndroidDev"&gt;Twitter&lt;/a&gt;&lt;/em&gt; &lt;/p&gt;&lt;/center&gt; &lt;center&gt;&lt;p&gt; &lt;em&gt;Subscribe to our &lt;a href="https://goo.gle/subscribe-androiddev-yt"&gt;YouTube channel&lt;/a&gt;&lt;/em&gt; &lt;/p&gt;&lt;/center&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-YvLu6Iqq3qY/YBR2PWa7aAI/AAAAAAAAQCQ/dViPshDrn2M6ekELBHImIGvn5D9zRsECwCLcBGAsYHQ/s0/image%2B7.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:25%" alt="GDG logo" border="0" data-original-height="810" data-original-width="1440" src="https://1.bp.blogspot.com/-YvLu6Iqq3qY/YBR2PWa7aAI/AAAAAAAAQCQ/dViPshDrn2M6ekELBHImIGvn5D9zRsECwCLcBGAsYHQ/s0/image%2B7.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt; &lt;p&gt; The Google Developer Groups program gives developers the opportunity to meet local developers with similar interests in technology. A GDG meetup event includes talks on a wide range of technical topics where you can learn new skills through hands-on workshops. &lt;/p&gt; &lt;center&gt;&lt;p&gt; Join a chapter near you &lt;a href="https://developers.google.com/community/gdg/groups"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;/center&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-ZmmknLJ_ZBE/YBR248DwllI/AAAAAAAAQCY/suDSAy5x7pYGceUq6-Hn0vA9eyqcMW_FACLcBGAsYHQ/s0/image%2B8.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:25%" alt="Women Techmakers logo" border="0" data-original-height="122" data-original-width="640" src="https://1.bp.blogspot.com/-ZmmknLJ_ZBE/YBR248DwllI/AAAAAAAAQCY/suDSAy5x7pYGceUq6-Hn0vA9eyqcMW_FACLcBGAsYHQ/s0/image%2B8.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt; &lt;p&gt; Founded in 2014, Google’s Women Techmakers is dedicated to helping all women thrive in tech through community, visibility and resources. With a member base of over 100,000 women developers, we’re working with communities across the globe to build a world where all women can thrive in tech. &lt;/p&gt; &lt;center&gt;&lt;p&gt; Become a member &lt;a href="https://services.google.com/fb/forms/joinwomentechmakers/"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;/center&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-qEAbLj4VjWM/YBR3qJ5XlSI/AAAAAAAAQCk/GXJDi7q9vZQFlUj79CZW6l0gRc4KzIBsACLcBGAsYHQ/s0/image%2B9.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:25%" alt="GD Experts logo" border="0" data-original-height="333" data-original-width="1600" src="https://1.bp.blogspot.com/-qEAbLj4VjWM/YBR3qJ5XlSI/AAAAAAAAQCk/GXJDi7q9vZQFlUj79CZW6l0gRc4KzIBsACLcBGAsYHQ/s0/image%2B9.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt; &lt;p&gt; The Google Developers Experts program is a global network of highly experienced technology experts, influencers and thought leaders who actively support developers, companies and tech communities by speaking at events, publishing content, and building innovative apps. Experts actively contribute to and support the developer and startup ecosystems around the world, helping them build and launch highly innovative apps. &lt;/p&gt; &lt;center&gt;&lt;p&gt; Learn more about the program &lt;a href="https://developers.google.com/community/experts"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;/center&gt; &lt;p&gt;Java is a registered trademark of Oracle and/or its affiliates.&lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=XLcUriodFYM:g3AfZuVOALk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=XLcUriodFYM:g3AfZuVOALk:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=XLcUriodFYM:g3AfZuVOALk:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/XLcUriodFYM" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-g56XW9w6ZM8/YBSZfpoEdDI/AAAAAAAAQC8/hLw50QUPW-YPWUTjD0tU8zZlSuSC5he2gCLcBGAsYHQ/s72-c/ADJ_Twitter_Jan_Wrapup.jpg" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/01/androiddevjourney-spotlight-january.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-2570445335974079142
   </id>
   <published>
    2021-01-28T09:08:00.000-08:00
   </published>
   <updated>
    2021-01-28T09:08:11.242-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="Android Developer" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Featured" />
   <category scheme="http://www.blogger.com/atom/ns#" term="latest" />
   <title type="text">Expanding the reach of your Android Auto apps</title>
   <content type="html">
    &lt;meta name="twitter:image" content=" https://1.bp.blogspot.com/-S4xqy39XVkI/YBG0540QsxI/AAAAAAAAQAo/52BksIjtceUAQn_51J0Wyv-qW82OfHY3gCLcBGAsYHQ/s0/AmiGO%2Balert.png "&gt; &lt;img style="display:none" src=" https://1.bp.blogspot.com/-S4xqy39XVkI/YBG0540QsxI/AAAAAAAAQAo/52BksIjtceUAQn_51J0Wyv-qW82OfHY3gCLcBGAsYHQ/s0/AmiGO%2Balert.png "&gt; &lt;p&gt;&lt;em&gt;Posted by Eric Bahna, Product Manager &lt;/em&gt;&lt;p&gt; &lt;p&gt; In December, &lt;a href="https://android-developers.googleblog.com/2020/12/opening-google-play-store-for-more-car.html"&gt;we opened the Google Play Store for publishing new Android Auto apps to closed testing&lt;/a&gt;. Today, you can reach more drivers by publishing navigation, parking, and charging apps to open testing tracks in the Google Play Store. With open testing, there’s no limit to the number of users who can download your app and you don’t need to manage lists of email addresses. This is an important milestone that gets us closer to making these apps available to all users in production. Get started with the &lt;a href="https://developer.android.com/training/cars/navigation"&gt;Android for Cars App Library&lt;/a&gt; and choose an open testing track in the Play Console. &lt;/p&gt; &lt;a href="https://1.bp.blogspot.com/-S4xqy39XVkI/YBG0540QsxI/AAAAAAAAQAo/52BksIjtceUAQn_51J0Wyv-qW82OfHY3gCLcBGAsYHQ/s0/AmiGO%2Balert.png" imageanchor="1" &gt;&lt;img style="width:100%" id=imgFull border="0" src="https://1.bp.blogspot.com/-S4xqy39XVkI/YBG0540QsxI/AAAAAAAAQAo/52BksIjtceUAQn_51J0Wyv-qW82OfHY3gCLcBGAsYHQ/s0/AmiGO%2Balert.png" data-original-width="1058" data-original-height="714" /&gt;&lt;/a&gt; &lt;p id="imgCaption"&gt; TomTom AmiGO, one of our early access partners &lt;/p&gt; &lt;p&gt; To give you a peek at what’s ahead, we’re working on adding the library to &lt;a href="https://developer.android.com/jetpack/?gclid=Cj0KCQiA0fr_BRDaARIsAABw4EvcYmk8uwosheg06nsZ7xyCb9XTRIcUvmFYwexOwb7G_Q6_v6USGS4aAq3TEALw_wcB&amp;gclsrc=aw.ds"&gt;Android Jetpack&lt;/a&gt;! This will give you more consistency with other Jetpack APIs and visibility into new features. When the Jetpack library is ready, migrating your app from the existing library will be straightforward - change the namespace and tweak some API calls. After we stabilize the library in Jetpack, we’ll prepare the Google Play Store to publish these new apps to production tracks. &lt;/p&gt; &lt;p&gt; You can get started today - you don’t need to wait for the Jetpack library. &lt;/p&gt; &lt;ol&gt; &lt;li&gt;Design your app’s experience using our &lt;a href="https://developer.android.com/training/cars/navigation"&gt;developer guide&lt;/a&gt; and &lt;a href="https://developer.android.com/docs/quality-guidelines/car-app-quality"&gt;app quality guidelines&lt;/a&gt;. &lt;li&gt;Develop using &lt;a href="https://developer.android.com/training/cars/navigation#install-library"&gt;today’s beta library&lt;/a&gt; so you can get user feedback from now. &lt;li&gt;Test using the &lt;a href="https://developer.android.com/training/cars/testing#test-auto"&gt;desktop head unit&lt;/a&gt;. &lt;li&gt;Publish to the Google Play Store, now up to open testing tracks. &lt;/li&gt; &lt;/ol&gt; &lt;p&gt; We’re excited to see what you’ve built and take it for a spin! &lt;/p&gt;&lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=k6qQhYUU_W8:uYg8Q71EaOw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=k6qQhYUU_W8:uYg8Q71EaOw:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=k6qQhYUU_W8:uYg8Q71EaOw:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/k6qQhYUU_W8" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-S4xqy39XVkI/YBG0540QsxI/AAAAAAAAQAo/52BksIjtceUAQn_51J0Wyv-qW82OfHY3gCLcBGAsYHQ/s72-c/AmiGO%2Balert.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/01/expanding-reach-of-your-android-auto.html
   </feedburner:origlink>
  </entry>
  <entry>
   <id>
    tag:blogger.com,1999:blog-6755709643044947179.post-2392373190678478635
   </id>
   <published>
    2021-01-15T06:08:00.001-08:00
   </published>
   <updated>
    2021-01-15T06:08:24.059-08:00
   </updated>
   <category scheme="http://www.blogger.com/atom/ns#" term="#MADSkills" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Android app development" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Jetpack" />
   <category scheme="http://www.blogger.com/atom/ns#" term="Kotlin" />
   <title type="text">MAD Skills Kotlin and Jetpack: wrap-up</title>
   <content type="html">
    &lt;meta name="twitter:image" content="https://1.bp.blogspot.com/-aKXUmGe_Cdk/YACmKq9d1ZI/AAAAAAAAP_o/KkKe1xVCL0weBvDApumCnFBx63VXBEoJgCLcBGAsYHQ/s0/more-productivity-with-Kotlin-header.png"&gt; &lt;img style="display:none" src="https://1.bp.blogspot.com/-aKXUmGe_Cdk/YACmKq9d1ZI/AAAAAAAAP_o/KkKe1xVCL0weBvDApumCnFBx63VXBEoJgCLcBGAsYHQ/s0/more-productivity-with-Kotlin-header.png"&gt; &lt;p&gt;&lt;em&gt;Posted by &lt;a href="https://twitter.com/fmuntenescu?lang=en"&gt;Florina Muntenescu&lt;/a&gt;, Developer Relations Engineer &lt;/em&gt;&lt;p&gt; &lt;center&gt;&lt;div class="separator" style="clear: both;"&gt;&lt;a href="https://1.bp.blogspot.com/-aKXUmGe_Cdk/YACmKq9d1ZI/AAAAAAAAP_o/KkKe1xVCL0weBvDApumCnFBx63VXBEoJgCLcBGAsYHQ/s0/more-productivity-with-Kotlin-header.png" style="display: block; padding: 1em 0; text-align: center; "&gt;&lt;img style="width:100%"alt="Kotlin and Jetpack image" border="0" data-original-height="968" data-original-width="3250" src="https://1.bp.blogspot.com/-aKXUmGe_Cdk/YACmKq9d1ZI/AAAAAAAAP_o/KkKe1xVCL0weBvDApumCnFBx63VXBEoJgCLcBGAsYHQ/s0/more-productivity-with-Kotlin-header.png"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/center&gt; &lt;p&gt; We just wrapped up another series of MAD Skills videos and articles - this time on Kotlin and Jetpack. We covered different ways in which we made Android code more expressive and concise, safer, and easy to run asynchronous code with Kotlin. &lt;/p&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt; Check out the episodes below to level up your Kotlin and Jetpack knowledge! Each episode covers a specific set of APIs, talking both about how to use the APIs but also showing how APIs work under the hood. All the episodes have accompanying blog posts and most of them link to either a sample or a codelab to make it easier to follow and dig deeper into the content. We also had a live Q&amp;A featuring Jetpack and Kotlin engineers. &lt;/p&gt; &lt;h2&gt;Episode 1 - Using KTX libraries&lt;/h2&gt; &lt;p&gt; In this episode we looked at how you can make your Android and Jetpack coding easy, pleasant and Kotlin-idiomatic with &lt;a href="https://developer.android.com/kotlin/ktx/extensions-list"&gt;Jetpack KTX extensions&lt;/a&gt;. Currently, more than 20 libraries have a KTX version. This episode covers some of the most important ones: &lt;code&gt;core-ktx&lt;/code&gt; that provides idiomatic Kotlin functionality for APIs coming from the Android platform, plus a few Jetpack KTX libraries that allow us to have a better user experience when working with APIs like &lt;code&gt;LiveData&lt;/code&gt; and &lt;code&gt;ViewModel&lt;/code&gt;. &lt;/p&gt; &lt;p&gt; Check out the &lt;a href="https://youtu.be/nKzvYBMdm54"&gt;video&lt;/a&gt; or the &lt;a href="https://medium.com/androiddevelopers/using-ktx-libraries-da1dc81c6ecf"&gt;article&lt;/a&gt;: &lt;/p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/nKzvYBMdm54" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt; &lt;h2&gt;Episode 2 - Simplifying APIs with coroutines and Flow&lt;/h2&gt; &lt;p&gt; Episode 2, covers how to simplify APIs using coroutines and Flow as well as how to build your own adapter using &lt;code&gt;suspendCancellableCoroutine&lt;/code&gt; and &lt;code&gt;callbackFlow&lt;/code&gt; APIs. To get hands-on with this topic, check out the &lt;em&gt;&lt;a href="https://codelabs.developers.google.com/codelabs/building-kotlin-extensions-library"&gt;Building a Kotlin extensions library codelab&lt;/a&gt;&lt;/em&gt;. &lt;/p&gt; &lt;p&gt; Watch the &lt;a href="https://youtu.be/OmHePYcHbyQ"&gt;video&lt;/a&gt; or read the &lt;a href="https://medium.com/androiddevelopers/simplifying-apis-with-coroutines-and-flow-a6fb65338765"&gt;article&lt;/a&gt;: &lt;/p&gt; &lt;center&gt;&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/OmHePYcHbyQ" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt; &lt;/center&gt; &lt;h2&gt;Episode 3 - Using and testing Room Kotlin APIs&lt;/h2&gt; &lt;p&gt; This episode opens the door to Room, peeking in to see how to create &lt;a href="https://developer.android.com/training/data-storage/room"&gt;Room&lt;/a&gt; tables and databases in Kotlin and how to implement one-shot suspend operations like insert, and observable queries using Flow. When using coroutines and Flow, Room moves all the database operations onto the background thread for you. Check out the &lt;a href="https://www.youtube.com/watch?v=vsDkhRTMdA0"&gt;video&lt;/a&gt; or &lt;a href="https://medium.com/androiddevelopers/using-and-testing-room-kotlin-apis-4d69438f9334"&gt;blog post&lt;/a&gt; to find out how to implement and test Room queries. For more hands-on work - check out the &lt;em&gt;&lt;a href="https://developer.android.com/codelabs/android-room-with-a-view-kotlin#0"&gt;Room with a view codelab&lt;/a&gt;&lt;/em&gt;. &lt;/p&gt; &lt;center&gt;&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/vsDkhRTMdA0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;/center&gt; &lt;h2&gt;Episode 4 - Using WorkManager Kotlin APIs&lt;/h2&gt; &lt;p&gt; Episode 4 makes your job easier with &lt;a href="https://developer.android.com/topic/libraries/architecture/workmanager/"&gt;WorkManager&lt;/a&gt;, for scheduling asynchronous tasks for immediate or deferred execution that are expected to run even if the app is closed or the device restarts. In this episode we go over the basics of WorkManager and look a bit more in depth at the Kotlin APIs, like &lt;code&gt;CoroutineWorker&lt;/code&gt;. &lt;/p&gt; &lt;p&gt; Find the &lt;a href="https://www.youtube.com/watch?v=qNO2uMmP87g"&gt;video here&lt;/a&gt; and the &lt;a href="https://medium.com/androiddevelopers/workmanager-kotlin-apis-a0fb9dfbfeb6"&gt;article here&lt;/a&gt;, but nothing compares to practical experience so go through the &lt;em&gt;&lt;a href="https://developer.android.com/codelabs/android-workmanager#0"&gt;WorkManager codelab&lt;/a&gt;&lt;/em&gt;. &lt;/p&gt; &lt;center&gt;&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/qNO2uMmP87g" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;/center&gt; &lt;h2&gt;Episode 5 - Community tip&lt;/h2&gt; &lt;p&gt; Episode 5 is by Magda Miu - a Google Developer Expert on Android who shared her experience of leveraging foundational Kotlin APIs with CameraX. Check it out here: &lt;/p&gt; &lt;center&gt; &lt;iframe width="560" height="315" src="https://www.youtube.com/embed/5oMb2fsb7y0" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;/center&gt; &lt;h2&gt;Episode 6 - Live Q&amp;A&lt;/h2&gt; &lt;p&gt; In the final episode we launched into a live Q&amp;A, hosted by &lt;a href="https://twitter.com/chethaase"&gt;Chet Haase&lt;/a&gt;, with guests &lt;a href="https://twitter.com/yigitboyar"&gt;Yigit Boyar&lt;/a&gt; - Architecture Components tech lead, &lt;a href="https://twitter.com/davidjwiner"&gt;David Winer&lt;/a&gt; - Kotlin product manager, and developer relations engineers &lt;a href="https://twitter.com/manuelvicnt"&gt;Manuel Vivo&lt;/a&gt; and &lt;a href="https://twitter.com/FMuntenescu"&gt;myself&lt;/a&gt;. We answered questions from you on YouTube, Twitter and elsewhere. &lt;/p&gt; &lt;center&gt;&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/d-GkmHE8G80" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;/center&gt; &lt;div class="feedflare"&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=mj9SYqGoaiM:9hE6jP6y2K4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/hsDu?a=mj9SYqGoaiM:9hE6jP6y2K4:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/hsDu?i=mj9SYqGoaiM:9hE6jP6y2K4:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/hsDu/~4/mj9SYqGoaiM" height="1" width="1" alt=""/&gt;
   </content>
   <author>
    <name>
     Android Developers
    </name>
    <uri>
     http://www.blogger.com/profile/08588467489110681140
    </uri>
    <email>
     noreply@blogger.com
    </email>
    <gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="https://img1.blogblog.com/img/b16-rounded.gif" />
   </author>
   <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://1.bp.blogspot.com/-aKXUmGe_Cdk/YACmKq9d1ZI/AAAAAAAAP_o/KkKe1xVCL0weBvDApumCnFBx63VXBEoJgCLcBGAsYHQ/s72-c/more-productivity-with-Kotlin-header.png" height="72" width="72" />
   <feedburner:origlink>
    http://android-developers.googleblog.com/2021/01/mad-skills-kotlin-and-jetpack-wrap-up.html
   </feedburner:origlink>
  </entry>
 </feed> 
</div>